第14行:[:55.5:整数表达式预期 - shell错误

时间:2017-03-09 08:37:24

标签: bash shell unix awk sh

我遇到第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门考试)。

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 ]