1. ホーム
  2. bash

[解決済み] bashでif文の演算を行うには?

2023-03-13 09:43:39

質問

このようなことをしたいのですが。

if [ $1 % 4 == 0 ]; then
...

しかし、これではうまくいきません。

代わりに何をすればいいのでしょうか?

どのように解決するのですか?

read n
if ! ((n % 4)); then
    echo "$n divisible by 4."
fi

(( )) 演算子はC言語の算術演算として式を評価し、ブーリアン値を返します。

したがって (( 0 )) は偽であり (( 1 )) は真です。[1]

$(( )) 演算子もC言語の算術式を展開しますが、true/falseを返すのではなく、代わりに値を返します。このため、出力をテストすることができます。 $(( )) をこのようにテストすることができます。[2]

[[ $(( n % 4 )) == 0 ]]

しかし、これは等しい。 if (function() == false) . したがって,より単純で慣用的なテストは,次のようになります.

! (( n % 4 ))

[1]: モダンなbashは、あなたのマシンの intmax_t のサイズまでの数字を扱います。

[2]: ドロップできることに注意してください。 $ の中に (( )) の中で、変数の参照を解除するからです。