我正在使用Bash 3,并且正在尝试形成条件。在C / C ++,它的死简单((A || B) && C)
。在Bash中,事实并非如此(我认为Git作者必须先编写此代码,然后再进行其他工作)。
这是行不通的。注意,这<0 or 1>
不是字符串文字。表示0或1(通常来自grep -i
)。
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ [ "$A" -eq "0" ] || [ "$B" -ne "0" ] ] && [ "$C" -eqe "0" ]; then ... fi
结果是:
line 322: syntax error near unexpected token `[['
然后,我尝试:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ ([ "$A" -eq "0" ]) || ([ "$B" -ne "0" ]) ] && [ "$C" -eq "0" ]; then ... fi
结果是:
line 322: syntax error near unexpected token `[['
问题的一部分是搜索结果是简单的示例,而不是带有复合条件的更复杂的示例。
如何((A || B) && C)
在Bash中执行简单操作?
我准备将其展开并在多个块中重复相同的命令:
A=<0 or 1>
B=<0 or 1>
C=<0 or 1>
if [ "$A" -eq "0" ] && [ "$C" -eq "0" ]; then
...
elif [ "$B" -ne "0" ] && [ "$C" -eq "0" ]; then
...
fi