Bash - 意外的标记`fi'

时间:2015-11-14 22:02:09

标签: linux bash terminal

在比较IF语句中的两个字符串时遇到问题。

if [ $users -eq $usersFinal ] ; than 
    echo "Well done!"
fi

我收到一个意外的令牌“fi”错误,实际上并没有看到语法中出现了什么问题。

1 个答案:

答案 0 :(得分:4)

你还是错过了;在你的一个班轮里。

users=9
usersFinal=9

if [ "$users" -eq "$usersFinal" ];then 
    echo "Bravoidididid!"
fi

你的oneliner:

users=9;usersFinal=9;if [ "$users" -eq "$usersFinal" ] ; then echo "Bravoidididid!" fi

缺少最后一个;

users=9;usersFinal=9;if [ "$users" -eq "$usersFinal" ] ; then echo "Bravoidididid!"; fi

我假设用户和usersFinal是整数,而不是字符串。

对于oneliner,;继续if测试(在当时之前),然后在fi之前。

如果users / usersFinal是字符串,请使用==

users='fred';usersFinal='fred';if [ "$users" == "$usersFinal" ] ; then echo "Bravoidididid!"; fi

users='fred george'
usersFinal='fred george'

if [ "$users" == "$usersFinal" ];then 
    echo "Bravoidididid!"
fi

请注意,使用字符串引用变量非常重要。对于单个括号,如果其中一个变量为空,则必须避免错误。

http://tldp.org/LDP/abs/html/comparison-ops.html

-gt,-lt,-eq,-le,-ge是整数比较运算符。

请注意,您将看到带有“$ x”=“$ y”的示例,即单个=,但我发现它更清晰,更容易阅读,并且使用==始终用于字符串比较Bash(注意与=和==与[[]]的细微差别。)

使用>时请特别注意该页面当-gt。记住它的简单方法:[[$ a> $ b]]但是[“$ a”-gt“$ b”](单一与双括号)。