bashで始まる:-ltおよび-gt引数


24

私は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)は何をするのか教えてもらえますか?ありがとう!


9
申し訳ありませんがecho、コードのステートメントがあなたの質問に答えていることを指摘する価値があります。
devnull

変数の周りに不足している引用符があります
ステファンChazelas

回答:


29

less thanand の略ですgreater than。bashでの整数比較に使用されます。次のように入力すると、さらに読むことができますman test

   ....
   INTEGER1 -gt INTEGER2
          INTEGER1 is greater than INTEGER2
   ....
   INTEGER1 -lt INTEGER2
          INTEGER1 is less than INTEGER2
   ....

7

あなたは、の定義は見つけることができる-lt-gtのドキュメントのtestコマンドをman test以降)、またはbashののドキュメントでtest組み込みコマンドbashで(他のほとんどのシェルのように)です。

-ltおよび-gtは、数値比較です(より小さい[と等しくない]、より大きい[と等しくない])。より小さい/より大きい演算子-leand -ge、および等しい演算子-eqと等しくない演算子andもあり-neます。これらは数値演算子であるため、どちらかの側が数値ではなく、9より小さいと見なされるとエラーが発生します10

-lt通常で<はなく名前のような名前が使用される理由は、その文字<がリダイレクトとして解釈されるためです。演算子=および!=も存在しますが、文字列比較を実行します:test 00 -eq 0trueに対してtest 00 = 0falseです。

bashを含む一部のシェルにも演算子が<あり>、文字列の辞書式比較を実行するため、前にソートされるtest 9 \< 10ためfalseです(バックスラッシュにより、文字がリダイレクト演算子として解釈されなくなります)。これらのシェルは、テスト用の二重括弧構文も提供します(例:に対して)。内部にリダイレクトを持たないため、引用符で囲む必要はありません。91<[[ 9 < 10 ]][ 9 \< 10 ]<


4

それらは単なる演算子です。

単に: gtおよびlt>(より大きい)および<(より小さい)を意味します。

あなたは見ることができ、ここでの演算子の詳細については:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.