我只能做简单的expression式,如1=1 and 0=1
test 1 = 1 -a 0 = 1
但如何做复杂的expression式,如1=1 and (0=1 or 1=1) ?
要么使用多个testing呼叫:
test 1 = 1 && test 0 = 1 -o 1 = 1
要么 [[:
[[ 1 = 1 && (0 = 1 || 1 = 1) ]]
只要你小心,你可以使用test或记住括号必须逃脱,条款必须用空格分开:
if [ \( a = a \) -a \( a = b -ob = b \) ] then echo Yes else echo No fi
这对我来说是“是的”。 不过,使用Bash和Korn shell [[ ]]运算符通常更容易; 你不必做太多的转义。
这个问题已经被回答了,但是你可能会考虑一些样式提示(也许会拒绝:-)):
如果你是写它的人,发现它令人困惑,那么也许:
弗洛里安大部分都是正确的,但请记住,bash也有算术扩展,比较variables时更好一些。
在这里看到更多的信息。