Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Exécution de plusieurs actions

Dans les versions de bash avant 4.0, maisons n'autorisait qu'une seule action à effectuer sur un match réussi. Après une correspondance réussie, la commande se terminerait. Ici, nous voyons un script qui teste un personnage :



#! / Bin / bash


# case4-1 : tester un personnage


read -n 1 -p "Tapez un caractère > " echo

cas $REPLY dans

[[:upper:]]) echo "'$REPLY' est en majuscule." ;;

[[:lower:]]) echo "'$REPLY' est en minuscule." ;;

[[:alpha:]]) echo "'$REPLY' est alphabétique." ;;

[[:digit:]]) echo "'$REPLY' est un chiffre." ;; [[:graph:]]) echo "'$REPLY' est un caractère visible." ;;

[[:punct:]]) echo "'$REPLY' est un symbole de ponctuation." ;; [[:space:]]) echo "'$REPLY' est un caractère d'espacement." ;; [[:xdigit:]]) echo "'$REPLY' est un chiffre hexadécimal." ;;

Esac

#! / Bin / bash


# case4-1 : tester un personnage


read -n 1 -p "Tapez un caractère > " echo

cas $REPLY dans

[[:upper:]]) echo "'$REPLY' est en majuscule." ;;

[[:lower:]]) echo "'$REPLY' est en minuscule." ;;

[[:alpha:]]) echo "'$REPLY' est alphabétique." ;;

[[:digit:]]) echo "'$REPLY' est un chiffre." ;; [[:graph:]]) echo "'$REPLY' est un caractère visible." ;;

[[:punct:]]) echo "'$REPLY' est un symbole de ponctuation." ;; [[:space:]]) echo "'$REPLY' est un caractère d'espacement." ;; [[:xdigit:]]) echo "'$REPLY' est un chiffre hexadécimal." ;;

Esac


L'exécution de ce script produit ceci :



[moi@linuxbox ~]$ cas4-1

Tapez un caractère > a

'a' est en minuscule.

[moi@linuxbox ~]$ cas4-1

Tapez un caractère > a

'a' est en minuscule.


Le script fonctionne pour la plupart, mais échoue si un caractère correspond à plus d'une des classes de caractères POSIX. Par exemple, le caractère « a » est à la fois en minuscule et alphabétique, ainsi qu'un chiffre hexadécimal. Dans bash avant la version 4.0, il n'y avait aucun moyen de maisons pour correspondre à plus d'un test. versions modernes de bash, ajoutez la notation ";;&" à


terminer chaque action, alors maintenant nous pouvons faire ceci:



#! / Bin / bash


# case4-2 : tester un personnage


read -n 1 -p "Tapez un caractère > " echo

cas $REPLY dans

[[:upper:]]) echo "'$REPLY' est en majuscule." ;;&

[[:lower:]]) echo "'$REPLY' est en minuscule." ;;&

[[:alpha:]]) echo "'$REPLY' est alphabétique." ;;&

[[:digit:]]) echo "'$REPLY' est un chiffre." ;;& [[:graph:]]) echo "'$REPLY' est un caractère visible." ;;&

[[:punct:]]) echo "'$REPLY' est un symbole de ponctuation." ;;& [[:space:]]) echo "'$REPLY' est un caractère d'espacement." ;;& [[:xdigit:]]) echo "'$REPLY' est un chiffre hexadécimal." ;;&

Esac

#! / Bin / bash


# case4-2 : tester un personnage


read -n 1 -p "Tapez un caractère > " echo

cas $REPLY dans

[[:upper:]]) echo "'$REPLY' est en majuscule." ;;&

[[:lower:]]) echo "'$REPLY' est en minuscule." ;;&

[[:alpha:]]) echo "'$REPLY' est alphabétique." ;;&

[[:digit:]]) echo "'$REPLY' est un chiffre." ;;& [[:graph:]]) echo "'$REPLY' est un caractère visible." ;;&

[[:punct:]]) echo "'$REPLY' est un symbole de ponctuation." ;;& [[:space:]]) echo "'$REPLY' est un caractère d'espacement." ;;& [[:xdigit:]]) echo "'$REPLY' est un chiffre hexadécimal." ;;&

Esac


Lorsque nous exécutons ce script, nous obtenons ceci :



[moi@linuxbox ~]$ cas4-2

Tapez un caractère > a 'a' est en minuscule. 'a' est alphabétique.

'a' est un caractère visible. 'a' est un chiffre hexadécimal.

[moi@linuxbox ~]$ cas4-2

Tapez un caractère > a 'a' est en minuscule. 'a' est alphabétique.

'a' est un caractère visible. 'a' est un chiffre hexadécimal.


L'ajout de la syntaxe ";;&" permet à case de passer au test suivant plutôt que de simplement terminer.


Meilleur système d'exploitation Cloud Computing chez OnWorks :