我遇到第8,11,14,17行的错误。 该计划是
#!/bin/sh
read a
b=$(grep -i $a TeamScore.txt| awk 'BEGIN{FS =" "}{print ($2+$4)/2}')
echo "the avg is $b"
if [ "$b" -ge 80] #line8
then
echo "1st class "
elif [ "$b" -lt 80 ] || [ "$b" -ge 70 ] #line11
then
echo "2nd class"
elif [ "$b" -lt 70 ] || [ "$b" -ge 60 ] #line14
then
echo "3rd class"
elif [ "$b" -lt 60 ] #line17
then
echo "fail"
else
echo "code not working"
fi
我是unix和shell脚本的新手,我想错了,我该如何修复它.TeamScore.txt包含一个名称及其分数表(2门考试)。
答案 0 :(得分:2)
问题是test
命令只能理解整数,但您要将b
设置为55.5
,其中包含一小部分。更改awk
命令以将其四舍五入。
b=$(grep -i $a TeamScore.txt| awk 'BEGIN{FS =" "}{print int(($2+$4)/2)}')
在第8行的]
之前还需要一个空格。
答案 1 :(得分:1)
第8行:添加额外空格:
if [ "$b" -ge 80 SPACE_HERE_REQUIRED ]
第11行,第14行和第17行:数字运算符无法与字符串进行比较,因此请使用$ b而不是" $ b",例如,使用此
if [ $b -ge 80 ]
而不是:
if [ "$b" -ge 80 ]