私はbashから始めて、次のものを見つけました:
if test $first -lt $second
then
echo $first is lower than $second
else
if test $first -gt $second
then
echo $first is higher than $second
else
echo $first and $second are equals
fi
fi
スクリプトを読み取って実行するために、私はそれが何をするかを知っていますが、-ltと-gtが何のためにあるのかわかりません。
誰かがそのような「ツール」の名前は何で、彼らが(-ltと-gt)は何をしているのか教えてもらえますか?ありがとう!
less than
およびgreater than
の省略形です。 bashでの整数比較に使用されます。 man test
と入力すると、さらに読むことができます:
....
INTEGER1 -gt INTEGER2
INTEGER1 is greater than INTEGER2
....
INTEGER1 -lt INTEGER2
INTEGER1 is less than INTEGER2
....
-lt
および-gt
の定義は、 test
コマンド (man test
)のドキュメント、またはbashのドキュメントにあります。 test
は、(他のほとんどのシェルと同様に)bashの組み込みコマンドであるためです。
-lt
と-gt
は数値比較です(より小さい[かつ等しくない]、より大きい[等しくない])。より小さい/より大きいまたは等しい演算子-le
および-ge
と、等しい演算子および等しくない演算子-eq
および-ne
もあります。これらは数値演算子であるため、どちらかが数値でない場合はエラーが発生し、9
は10
より小さいと見なされます。
通常の-lt
ではなく<
のような名前が使用される理由は、文字<
がリダイレクトとして解釈されるためです。演算子=
および!=
も存在しますが、これらは文字列比較を実行します。test 00 -eq 0
はtrueであるのに対し、test 00 = 0
はfalseです。
Bashを含む一部のシェルには、文字列の辞書式比較を実行する演算子<
および>
もあり、test 9 \< 10
は9
より前にソートされるため、1
はfalseです。バックスラッシュは、文字<
がリダイレクト演算子として解釈されるのを防ぎます)。これらのシェルは、テスト用の二重ブラケット構文も提供します。 [[ 9 < 10 ]]
([ 9 \< 10 ]
とは対照的に)、内部にリダイレクトを含めることができないため、<
を引用する必要はありません。