无法添加2个以上的变量

时间:2016-09-09 02:49:59

标签: linux bash shell unix expr

每当我使用多个运算符添加3个以上的数字时,我就会遇到问题。 (我试过expr,bc,

SUM=$(( $S1 + $S2 + $S3 ))

和许多其他形式,但每当我有3个变量,我得到这个错误。

expr: non-integer argument
expr: syntax error

这是我用2个变量做的(工作正常)

#!/bin/sh
FILE=$1
while read -r SID FIRST LAST S1 S2 S3
do
     SUM=$(expr $S1 + $S2)
     AVG=$(expr $SUM / 3)
     printf '%d [%d] %s, %s\n' "$AVG" "$SID" "$LAST" "$FIRST"
done < "$FILE" | sort

当我做3个变量(没有工作)时

#!/bin/sh
FILE=$1
while read -r SID FIRST LAST S1 S2 S3
do
     SUM=$(expr $S1 + $S2 + $S3)
     AVG=$(expr $SUM / 3)
     printf '%d [%d] %s, %s\n' "$AVG" "$SID" "$LAST" "$FIRST"
done < "$FILE" | sort


expr: non-integer argument
expr: syntax error

txt文件

123456789 Lee Johnson 72 85 90
999999999 Jaime Smith 90 92 91
888111818 JC Forney 100 81 97
290010111 Terry Lee 100 99 100
199144454 Tracey Camp 77 84 84
299226663 Laney Camp 70 74 71
434401929 Skyler Camp 78 81 82
928441032 Jess Forester 85 80 82
928441032 Chris Forester 97 94 89

1 个答案:

答案 0 :(得分:2)

shell绝对支持这个;因此,问题在于您的数据。请尝试以下方法:

s1=1
s2=2
s3=3
echo $(( s1 + s2 + s3 ))

...运行,并显示输出6here

同样地:

s1=1
s2=2
s3=3
expr "$s1" + "$s2" + "$s3"

...运行,并显示输出6here