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!
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
....
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:
Ce sont des opérateurs de comparaison
-lt = moins de
-gt = supérieur à
Vous pouvez consulter cette page pour plus de détails: