0

每当我使用多个运算符添加超过 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
4

1 回答 1

2

外壳绝对支持这一点;因此,问题在于您的数据。尝试以下操作:

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

...运行,并6此处显示输出。


同样地:

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

...运行,并6此处显示输出。

于 2016-09-09T02:59:59.850 回答