支架[
缺少(测试)操作员。它应该是这样的:
if [ "$server" = "Creative+Survival" ]
then
echo "true"
else
echo "false"
fi
注意:这些括号周围的空格很重要。
条件测试周围的方括号实际上是test
操作员。
所以上面等价于:
if test "$server" = "Creative+Survival"
then
echo "true"
else
echo "false"
fi
但每个人都使用括号;我很少看到使用test
关键词。
在 bash shell 中还允许使用双括号(尽管这不是那么可移植,因为它不是 POSIX 标准):
if [[ "$server" = "Creative+Survival" ]]
then
这是描述之间差异的页面链接[
, [[
, and test
:
http://mywiki.wooledge.org/BashFAQ/031 http://mywiki.wooledge.org/BashFAQ/031
Update
Q:这似乎有效,但如果我选择“创意+生存”以外的任何内容,它会输出错误代码。这应该发生吗?
A:根本不清楚哪个组件发出了什么错误代码。我希望您想检查每个可能的选择。你可以用elif
,或与case
.
if [ "$server" = "Creative+Survival" ]
then
echo "Creative and Survival"
elif [ "$server" = "Tekkit Cheat Survival" ]
then
echo "Tekkit Cheat Survival"
elif [ "$server" = "Flat Tekkit" ]
then
echo "Flat Tekkit"
else
echo "no action for specified server"
fi
case "$server" in
'Creative+Survival')
echo "Creative and Survival"
;;
'Tekkit Cheat Survival')
echo "Tekkit Cheat Survival"
;;
*)
echo "no action found for server $server"
;;
esac
(注意:缩进只是为了提高可读性;bash 关心换行符,而不是前导空格。)