在比较IF语句中的两个字符串时遇到问题。
if [ $users -eq $usersFinal ] ; than
echo "Well done!"
fi
我收到一个意外的令牌“fi”错误,实际上并没有看到语法中出现了什么问题。
答案 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”](单一与双括号)。