Bashでは、条件式を使用して2つの整数を比較できます。
アルギニン1OPアルギニン2
-eq
OPは-ne
、、、-lt
または-le
のいずれかです。これらの算術バイナリ演算子は、次の場合にtrueを返します。-gt
-ge
アルギニン1等しい、等しくない、小さい、小さい、等しい、大きい、大きい、または等しいアルギニン2、それぞれ。アルギニン1そしてアルギニン2正または負のどちらでもかまいません。
または算術式:
<= >= < >
比較する
== !=
平等と不平等
2つの整数を比較する2つの方法があるのはなぜですか?いつどれを使うべきですか?
たとえば、[[ 3 -lt 2 ]]
条件式を使用し、(( 3 < 2 ))
算術式を使用します。比較が真の場合、両方とも0を返します。
2つの整数を比較するとき、これら2つの方法を交換して使用できますか?それでは、なぜBashには1つではなく2つの方法がありますか?
ベストアンサー1
はい、2つの整数を比較する2つの方法があります。
これらの事実は、このフォーラムで広く受け入れられていないようです。
このイディオムで
[ ]
算術比較に使用される演算子は-eq
、、、-ne
および-lt
です-le
。-gt
-ge
彼らはまた、コマンドと
[[ ]]
。はい、このイディオムでは、
=
など<
は文字列演算子です。このイディオムで算術比較
(( ))
に使用される演算子は==
、、、、、および!=
です。<
<=
>
>=
$
いいえ、これは「算術拡張」(で始まる)ではありません$(( ))
。 man bash では、「複合コマンド」として定義されます。はい、「算術拡張」(内部的に)と同じ規則に従いますが、出力はなく、終了値のみがあります。次のように使用できます。
if (( 2 > 1 )); then ...
2つの整数を比較する2つの異なる方法があるのはなぜですか?
(( ))
私は後者が算術テストを実行するより簡単な方法で開発されたと思います。とほぼ同じです$(( ))
が、出力はありません。
なぜ2人の個人ですか?これは、2つのprintf
テスト(外部と組み込み)または4つのテスト(外部test
、組み込み、およびtest
)があるのと同じ理由です。これが樹皮が成長するように、一部の領域は年に改善され、他の領域は翌年に改善されます。[
[[
いつどれを使うべきですか?
有効な違いがあってはいけないので、これは非常に難しい質問です。もちろん、aの動作[ ]
方法とaの内部動作方法には若干の違いがあります(( ))
。しかし、2つの整数を比較するにはどちらが良いですか?誰でも! 。
2つの整数を比較するとき、これら2つの方法を交換して使用できますか?
両方の数字について私はそうだと答えなければなりません。
ただし、変数、拡張、数学演算の場合は、どちらかを優先する主な違いがあります。どちらも絶対に等しいとは言えません。まず、(( ))
複数の数学演算を順次実行できます。
if (( a=1, b=2, c=a+b*b )); then echo "$c"; fi
それでは、なぜBashには1つではなく2つの方法がありますか?
どちらも役に立つとしたらどうしますか?