私は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