GNU/Linux >> Tutoriels Linux >  >> Linux

La différence entre les opérateurs bash [[ Vs [ Vs ( Vs ((?

Je suis un peu confus quant à ce que ces opérateurs font différemment lorsqu'ils sont utilisés dans bash (crochets, doubles crochets, parenthèses et doubles parenthèses).

[[ , [ , ( , ((

J'ai vu des gens les utiliser sur des déclarations if comme celle-ci :

if [[condition]]

if [condition]

if ((condition))

if (condition)

Réponse acceptée :

Dans les shells de type Bourne, un if l'instruction ressemble généralement à

if
   command-list1
then
   command-list2
else
   command-list3
fi

Le then la clause est exécutée si le code de sortie de la command-list1 la liste des commandes est nulle. Si le code de sortie est différent de zéro, alors le else clause est exécutée. command-list1 peut être
simple ou complexe. Il peut, par exemple, s'agir d'une séquence d'un ou plusieurs pipelines séparés par l'un des opérateurs ; , & , && , || ou saut de ligne. Le if les conditions indiquées ci-dessous ne sont que des cas particuliers de command-list1 :

  1. if [ condition ]

    [ est un autre nom pour le test traditionnel commande. [ / test est un utilitaire POSIX standard. Tous les shells POSIX l'ont intégré (bien que ce ne soit pas requis par POSIX²). Le test La commande définit un code de sortie et le if déclaration agit en conséquence. Les tests typiques consistent à déterminer si un fichier existe ou si un nombre est égal à un autre.

  2. if [[ condition ]]

    Il s'agit d'une nouvelle variante améliorée de test ¹ de ksh ce coup , zsh , yash , busybox sh également soutenir. Ce [[ ... ]] la construction définit également un code de sortie et le if déclaration agit en conséquence. Parmi ses fonctionnalités étendues, il peut tester si une chaîne correspond à un modèle générique (pas dans busybox sh ).

  3. if ((condition))

    Un autre ksh extension qui bash et zsh également soutenir. Cela effectue de l'arithmétique. À la suite de l'arithmétique, un code de sortie est défini et le if déclaration agit en conséquence. Il renvoie un code de sortie de zéro (vrai) si le résultat du calcul arithmétique est différent de zéro. Comme [[...]] , ce formulaire n'est pas POSIX et n'est donc pas portable.

  4. if (command)

    Cela exécute la commande dans un sous-shell. Lorsque la commande se termine, elle définit un code de sortie et le if déclaration agit en conséquence.

    Une raison typique d'utiliser un sous-shell comme celui-ci est de limiter les effets secondaires de la command si command les affectations de variables requises ou d'autres modifications de l'environnement du shell. Ces modifications ne restent pas après la fin du sous-shell.

  5. if command

    la commande est exécutée et le if l'instruction agit en fonction de son code de sortie.

Connexe :comment puis-je utiliser bash comme shell de connexion lorsque l'administrateur système refuse de me laisser le modifier ?


Linux
  1. La différence entre une commande intégrée et une qui ne l'est pas ?

  2. La commande "eval" dans Bash ?

  3. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  4. Quelle est la différence entre Sudo Su - et Sudo Su - ?

  5. Quelle est la différence entre l'utilisation de _exit() et exit() dans un fork-exec Linux conventionnel ?

Commande de sortie Bash et codes de sortie

Comprendre la différence entre les commandes sudo et su sous Linux

La différence entre plus, moins et la plupart des commandes

Quelle est la différence entre le chat et la commande tactile

Quelle est la différence entre la commande apt et apt-get ?

Quelle est la différence entre les commandes kill et killall ?