我在Amazon Linux上使用bash shell。当我运行下面的代码块
时if [ $rc -eq 0 ] then
passed=`tr ' ' '\n' < $TFILE | grep -c PASSED`
error=`tr ' ' '\n' < $TFILE | grep -c ERROR`
warning=`tr ' ' '\n' < $TFILE | grep -c WARNING`
subject="Automated Results - $passed passed, $error errors, $warning warnings."
else
subject="Failed to run any tests."
fi
我收到错误,“意外标记'else'附近的语法错误”。如果正确编写if-then-else块,我需要做什么?
答案 0 :(得分:2)
引用bash中Fill
的语法定义(非常接近相关的POSIX规范):
<Rectangle Fill="{Binding ElementName=Hexcode, Path=, Mode=OneWay, Converter={StaticResource HexToBrushConverter}}" />
在help if
语句的条件部分中可以使用多个命令,和命令分隔符(此处以分号表示)是最后一个和列表之间的强制如果条件部分返回成功状态,则给出命令。
比较针对该语法定义给出的代码,它缺少这样的分隔符:
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
实际上,if
作为参数传递给if [ $rc -eq 0 ]; then
# ^
# \- this semicolon, or a newline, is mandatory before "then"
命令,而不是解析为语法。
(由于您已标记为then
,因此请考虑使用本机数学语法:[
更具可读性且漏洞更少。