web-dev-qa-db-fra.com

Commençant par les arguments bash: -lt et -gt

Je commence par bash et j'ai trouvé ce qui suit:

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

Pour lire le script et l'exécuter, je sais ce qu'il fait, mais pas à quoi servent -lt et -gt.

Quelqu'un peut-il me dire quel est le nom de ce type d'outil et ce qu'il fait (-lt et -gt)? Merci!

28
user47579

C'est court pour less than et greater than. Il est utilisé pour la comparaison d'entiers dans bash. Vous pouvez en savoir plus en tapant man test:

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

Vous pouvez trouver la définition de -lt et -gt dans la documentation de la commande test (man test), ou dans la documentation de bash puisque test est une commande intégrée dans bash (comme dans la plupart des autres shells).

-lt et -gt sont des comparaisons numériques (inférieures à [et non égales], supérieures à [et non égales]). Il existe également des opérateurs inférieurs/supérieurs ou égaux -le et -ge, et opérateurs égaux et non égaux -eq et -ne. Ce sont des opérateurs numériques, il y aura donc une erreur si l'un ou l'autre côté n'est pas un nombre, et 9 est considéré comme inférieur à 10.

Les raisons comme -lt sont utilisés plutôt que l'habituel < est que le caractère < serait interprété comme une redirection. Les opérateurs = et != existent également, mais ils effectuent une comparaison de chaînes: test 00 -eq 0 est vrai alors que test 00 = 0 c'est faux.

Certains shells, dont bash, ont également des opérateurs < et > qui effectuent une comparaison lexicographique de chaînes, donc test 9 \< 10 est faux car 9 est trié avant 1 (la barre oblique inverse empêche le caractère < d'être interprété comme un opérateur de redirection). Ces shells offrent également la syntaxe à double parenthèse pour les tests, par ex. [[ 9 < 10 ]] (par opposition à [ 9 \< 10 ]), qui ne peut pas contenir de redirections, donc le < n'a pas besoin d'être cité.

Ce ne sont que des opérateurs.

Simplement: gt et lt signifient> (supérieur à) et <(inférieur à).

Vous pouvez regarder ici pour plus d'informations sur les opérateurs:

4
Questionmark

Ce sont des opérateurs de comparaison

-lt = moins de

-gt = supérieur à

Vous pouvez consulter cette page pour plus de détails:

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

2
Ghassan