Je suis nouveau à la programmation bash. J'ai lu deux bons guides, mais ils m'ont semé la pagaille au sujet des opérateurs et des mots clés.
Quels sont les plus couramment et largement utilisés? Je ne sais pas quand utiliser lequel et pourquoi.
test
, [[ ]]
ou [ ]
ou même (( ))
$((exp))
ou $[exp]
-gt
ou >
, ge
ou >=
etc.<
et >
ou ( )
et quand nous devons l'échapper avec \:
\<
\(
etc.==
ou =
(comparaisons de chaînes)Je connais les différences fondamentales entre [
et [[
, mais d’autres questions restent un mystère pour moi.
Merci d'avance
test
est un shell intégré dans lequel (évidemment) teste une condition donnée. Certains vieux coquillages ont besoin d'une commande spéciale. Vous trouverez donc aussi un programme sur /usr/bin/test
.[
est également un programme permettant de tester certaines conditions. Ce logiciel nécessite également un crochet de fermeture et vous pouvez le trouver à /usr/bin/[
.[[…]]
est une alternative à test
et [
. Il a été développé pour le shell Korn (ksh
). Mais vous le trouvez également dans les versions Bash supérieures à 2 et dans le Z Shell. Les doubles crochets ont quelques caractéristiques intéressantes: -a
(AND) ou -o
(OR), vous pouvez utiliser &&
ou ||
.=
peut faire beaucoup plus.((…))
est équivalent à let
. Donc, fondamentalement, ((expression))
est identique à let "expression"
. Cependant, avec let
, vous pouvez utiliser plusieurs expressions, mais les doubles accolades ne permettent qu'une seule expression.$((…))
(et aussi $[…]
) effectue des calculs. Votre shell tente de calculer l'expression entre les accolades et remplace l'expression par le résultat. Donc, echo $((1+1))
mène à echo 2
. Donc, vos coquilles imprime le numéro 2.Chaque fois que vous souhaitez comparer deux nombres, vous devez utiliser l'option avec un tiret et deux lettres (-ge
, -lt
etc.). Si vous souhaitez comparer des chaînes, vous devez utiliser =
ou !=
.
Votre question concernant l'évasion est assez difficile à répondre. Parce que cela dépend du logiciel que vous utilisez en plus du Shell. Ainsi, grep
et grep -E
nécessitent un échappement différent. C'est également le cas de sed
, awk
et d'autres. La meilleure option consiste donc à consulter la page de manuel. Après un certain temps, vous vous habituez et savez quand utiliser l'évasion.