我正在学习基于Bourne shell的Korn shell。下面是我非常简单的代码。
read ab
if [ $ab = "a" || $ab = "A" ] ; then
echo hi
fi
由于某种原因||
运算符给我错误:
[: missing `]'
a: command not found
答案 0 :(得分:3)
编写if
条件的正确方法是:
read ab
if [ "$ab" = "a" ] || [ "$ab" = "A" ]; then
echo hi
fi
使用[ ... ]
时,必须将变量放在双引号中。否则,如果变量展开为空或者扩展包含空格,则shell将失败并出现语法错误。
另见:
答案 1 :(得分:1)
如果您使用ksh或现代bash,则可以使用非标准[[
... ]]
代替[
... ]
。
这有两个好处:
||
... [[
]]
这使得编写
更安全,更短[[ $ab = a || $ab = A ]]