我想做这样的事情:
if [ (! true) -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
Run Code Online (Sandbox Code Playgroud)
但它会引发错误(-bash: syntax error near unexpected token '!')
有可能做这样的事吗?
这里的问题是[bash中的一个简单的buildtin命令(另一种写入方式test),它只能解释它获得的任何参数,而它(是一个操作符.在执行命令之前解析运算符.
要使用(和)使用[,您必须引用它们:
if [ \( ! true \) -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
Run Code Online (Sandbox Code Playgroud)
要么
if [ '(' ! true ')' -o true ]
then
echo "Success!"
else
echo "Fail!"
fi
Run Code Online (Sandbox Code Playgroud)
该[[ ... ]]构造是一种特殊的句法结构,它没有通常命令的句法限制,因为它在另一个层面上工作.因此,在这里你不需要引用你的括号,就像伊格纳西奥说的那样.(另外,你必须使用&&和||,而不是-a和-o这里).
你不能这样做,但你可以这样做:
if [ ! true ] || [ true ]
Run Code Online (Sandbox Code Playgroud)
作为一般规则,切勿尝试使用-a或-o选项[。
| 归档时间: |
|
| 查看次数: |
1346 次 |
| 最近记录: |