GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser et dans la boucle while de Bash

Le [] l'opérateur dans bash est du sucre syntaxique pour un appel à test , qui est documenté dans man test . "ou" est exprimé par un infixe -o , mais vous avez besoin d'un "et":

while [ $guess != 5 -a $guess != 10 ]; do

Il existe 2 façons correctes et portables d'obtenir ce que vous voulez.
Bon vieux shell syntaxe :

while [ "$guess" != 5 ] && [ "$guess" != 10 ]; do

Et bash syntaxe (comme vous le spécifiez) :

while [[ "$guess" != 5 && "$guess" != 10 ]]; do

Le moyen portable et robuste consiste à utiliser un case déclaration à la place. Si vous n'y êtes pas habitué, cela peut prendre quelques regards juste pour comprendre la syntaxe.

while true; do
    case $guess in 5 | 10) break ;; esac
    echo Your answer is $guess. This is incorrect. Please try again.
    echo -n "What is your guess? "
    read guess  # not $guess
done

J'ai utilisé while true mais vous pourriez en fait utiliser le case déclaration là directement. Il devient poilu à lire et à maintenir, cependant.

while case $guess in 5 | 10) false;; *) true;; esac; do ...

Linux
  1. Explorer l'API RESTful de Podman à l'aide de Python et Bash

  2. Bash Beginner Series #8 :Boucles dans Bash

  3. Exemples de boucle Bash For et de boucle While

  4. Vous tenir au courant - Exemples de boucle Bash For, While, Until

  5. rechercher et copier un fichier à l'aide de Bash

Bash jusqu'à la boucle

Bash pause et continuer

Commande de sortie Bash et codes de sortie

Bash Scripting - Boucle While And Until expliquée avec des exemples

Bash Scripting Part2 - Boucles For et While avec exemples

Création de classes et d'objets à l'aide de scripts bash