web-dev-qa-db-ja.com

bashから:-ltおよび-gt引数

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

28
user47579

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

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

-ltおよび-gtの定義は、 testコマンドman test)のドキュメント、またはbashのドキュメントにあります。 testは、(他のほとんどのシェルと同様に)bashの組み込みコマンドであるためです。

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

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

Bashを含む一部のシェルには、文字列の辞書式比較を実行する演算子<および>もあり、test 9 \< 109より前にソートされるため、1はfalseです。バックスラッシュは、文字<がリダイレクト演算子として解釈されるのを防ぎます)。これらのシェルは、テスト用の二重ブラケット構文も提供します。 [[ 9 < 10 ]][ 9 \< 10 ]とは対照的に)、内部にリダイレクトを含めることができないため、<を引用する必要はありません。

彼らはただのオペレーターです。

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

演算子の詳細については、 ここ を参照してください。

4
Questionmark

これらは比較演算子です

-lt =より小さい

-gt =より大きい

このページで詳細を確認できます。

http://tldp.org/LDP/abs/html/comparison-ops.html

2
Ghassan