第23行shell脚本附近的意外elif附近的语法错误

时间:2017-08-25 07:28:14

标签: shell unix

我是shell脚本的新手,错误发生在第23行     elif [grep $uni Aus-Uni.txt | wc -l -ne 0] 任何人都可以告诉我为什么我会收到此错误

"2") echo "please enter an number to view universities or a state name to view the number of uni in that state"
read uni
if [ uni -le `cat Aus-Uni.txt | wc -l` ]
then
echo `tail -$uni Aus-Uni.txt`
else
echo "The number you entered is too large"
fi
elif [`grep $uni Aus-Uni.txt | wc -l` -ne 0 ]
then
echo `grep $uni Aus-Uni.txt`
else
echo "No university in $uni was found"
fi
;;

2 个答案:

答案 0 :(得分:1)

Bash告诉你,它并没有期待elif那里 - 并且对于你发布的代码,我也没有。

elifelse if的缩写,需要转到else子句的位置。

如果您缩进代码,则更容易看到。

我已将elif更改为if,bash会发现结构更正确。但是,(对我而言)它并不清楚你想要实现的目标,所以它可能无法达到你想要的效果。

"2") echo "please enter an number to view universities or a state name to view the number of uni in that state"

read uni
if [ uni -le `cat Aus-Uni.txt | wc -l` ]
then
    echo `tail -$uni Aus-Uni.txt`
else
   echo "The number you entered is too large"
fi

#   This line had elif but there's no if for it to be an else for
if [`grep $uni Aus-Uni.txt | wc -l` -ne 0 ]
then
    echo `grep $uni Aus-Uni.txt`
else
    echo "No university in $uni was found"
fi
;;

答案 1 :(得分:0)

elif没有匹配的if。您使用的唯一 if 已经由 fi 终止。

如果仅用于语法,请将elif替换为if。当然,无论该程序是否真正按照您的意愿行事,我都不能说。