shell脚本pipline给一个变量
我有以下几点:shell脚本pipline给一个变量
FILENAME=$1
cat $FILENAME | while read LINE
do
response="$LINE" | cut -c1-14
request="$LINE" | cut -c15-31
difference=($response - $request)/1000
echo "$difference"
done
当我运行该脚本,它返回空行。我究竟做错了什么?
您需要将其更改为:
response=`echo $LINE | cut -c1-14`
request=`echo $LINE | cut -c15-31`
difference=`expr $response - $request`
val=`expr $difference/1000`
你基本上做的一切错误的;) 这应该会更好:
FILENAME="$1"
cat "$FILENAME" | while read LINE
do
response=$(echo "$LINE" | cut -c1-14) # or cut -c1-14 <<< "$line"
request=$(echo "$LINE" | cut -c15-31)
difference=$((($response - $request)/1000)
echo "$difference"
done
你试过这个吗?我得到'sh:语法错误附近有意想不到的标记'(''。祝大家好运。 – shellter 2012-03-02 15:47:08
试试这个:'difference = $(((response- request)/ 1000)) - 注意shell只做整数运算,所以你可能需要'difference = $(bc -l 2012-03-02 17:17:29
@shellter修正了glennjackman:没错,不知道是否需要整数运算。 – user123444555621 2012-03-02 21:08:22
可能是简单的AWK:
awk '{print ($1 - $2)/1000}' "$1"
我假设前14个字符和下17个字符是前两个空白分隔的字段。
我会试试看。 '和'之间有什么区别? – Decrypter 2012-03-02 14:45:57
/1000被打印出来。我在val ='expr $ difference/1000'后面加上了echo $ val – Decrypter 2012-03-02 14:50:00
需要'/'附近的空格 - expr需要看到它作为单独的参数 – 2012-03-02 17:16:41