Bash は変数に対して論理演算を実行します。

Bash は変数に対して論理演算を実行します。

あなたにとっては簡単です。 IFステートメントを使用せずにBashでこのようなことを実行できますか?

a=0
b=0
c=1

result= [ a || b || c ] # result of binary operation should be 1

可能ですか?

ベストアンサー1

算術式のビット演算子を使用できます。

result=$((a|b|c))

&ANDとXORの場合^も同様)。

論理演算子は算術式にも使用されます。

result=$((a||b||c))

(同様に&&)。

割り当ては式自体の一部である可能性があります(=この場合は周囲のスペースが許可されます)。

(( result = a || b || c ))

true代わりにandを使用すると、false括弧はまったく必要ありません。

a=false
b=false
c=true
a || b || c
result=$?

問題は、この場合、0がtrueを意味することです。

角かっこ内では、設定されていない値またはnull値自体のみがfalseです。だから、あなたは使用することができます

a=
b=
c=1
[[ $a || $b || $c ]]
result=$?

繰り返しますが、0はtrueに対応しますが、次のように変更することでこの問題を解決できます。

! [[ $a || $b || $c ]]

おすすめ記事