Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Esecuzione di più azioni

Nelle versioni di bash prima del 4.0, Custodie In caso di corrispondenza positiva, era consentita l'esecuzione di una sola azione. Dopo una corrispondenza positiva, il comando terminava. Qui vediamo uno script che testa un carattere:



#! / Bin / bash


# case4-1: testa un carattere


read -n 1 -p "Digita un carattere > " echo

caso $REPLY in

[[:upper:]]) echo "'$REPLY' è in maiuscolo." ;;

[[:lower:]]) echo "'$REPLY' è in minuscolo." ;;

[[:alpha:]]) echo "'$REPLY' è alfabetico." ;;

[[:digit:]]) echo "'$REPLY' è una cifra." ;; [[:graph:]]) echo "'$REPLY' è un carattere visibile." ;;

[[:punct:]]) echo "'$REPLY' è un simbolo di punteggiatura." ;; [[:space:]]) echo "'$REPLY' è uno spazio vuoto." ;; [[:xdigit:]]) echo "'$REPLY' è una cifra esadecimale." ;;

che C

#! / Bin / bash


# case4-1: testa un carattere


read -n 1 -p "Digita un carattere > " echo

caso $REPLY in

[[:upper:]]) echo "'$REPLY' è in maiuscolo." ;;

[[:lower:]]) echo "'$REPLY' è in minuscolo." ;;

[[:alpha:]]) echo "'$REPLY' è alfabetico." ;;

[[:digit:]]) echo "'$REPLY' è una cifra." ;; [[:graph:]]) echo "'$REPLY' è un carattere visibile." ;;

[[:punct:]]) echo "'$REPLY' è un simbolo di punteggiatura." ;; [[:space:]]) echo "'$REPLY' è uno spazio vuoto." ;; [[:xdigit:]]) echo "'$REPLY' è una cifra esadecimale." ;;

che C


L'esecuzione di questo script produce quanto segue:



[io@linuxbox~]$ caso4-1

Digita un carattere > a

'a' è minuscola.

[io@linuxbox~]$ caso4-1

Digita un carattere > a

'a' è minuscola.


Lo script funziona per la maggior parte, ma fallisce se un carattere corrisponde a più di una delle classi di caratteri POSIX. Ad esempio, il carattere "a" è sia minuscolo che alfabetico, oltre a essere una cifra esadecimale. In bash prima della versione 4.0 non c'era modo per Custodie per abbinare più di un test. Versioni moderne di bash, aggiungi la notazione “;;&” a


terminare ogni azione, quindi ora possiamo fare questo:



#! / Bin / bash


# case4-2: testa un carattere


read -n 1 -p "Digita un carattere > " echo

caso $REPLY in

[[:upper:]]) echo "'$REPLY' è in maiuscolo." ;;&

[[:lower:]]) echo "'$REPLY' è in minuscolo." ;;&

[[:alpha:]]) echo "'$REPLY' è alfabetico." ;;&

[[:digit:]]) echo "'$REPLY' è una cifra." ;;& [[:graph:]]) echo "'$REPLY' è un carattere visibile." ;;&

[[:punct:]]) echo "'$REPLY' è un simbolo di punteggiatura." ;;& [[:space:]]) echo "'$REPLY' è uno spazio vuoto." ;;& [[:xdigit:]]) echo "'$REPLY' è una cifra esadecimale." ;;&

che C

#! / Bin / bash


# case4-2: testa un carattere


read -n 1 -p "Digita un carattere > " echo

caso $REPLY in

[[:upper:]]) echo "'$REPLY' è in maiuscolo." ;;&

[[:lower:]]) echo "'$REPLY' è in minuscolo." ;;&

[[:alpha:]]) echo "'$REPLY' è alfabetico." ;;&

[[:digit:]]) echo "'$REPLY' è una cifra." ;;& [[:graph:]]) echo "'$REPLY' è un carattere visibile." ;;&

[[:punct:]]) echo "'$REPLY' è un simbolo di punteggiatura." ;;& [[:space:]]) echo "'$REPLY' è uno spazio vuoto." ;;& [[:xdigit:]]) echo "'$REPLY' è una cifra esadecimale." ;;&

che C


Quando eseguiamo questo script, otteniamo questo:



[io@linuxbox~]$ caso4-2

Digita un carattere > a 'a' è minuscola. 'a' è alfabetica.

'a' è un carattere visibile. 'a' è una cifra esadecimale.

[io@linuxbox~]$ caso4-2

Digita un carattere > a 'a' è minuscola. 'a' è alfabetica.

'a' è un carattere visibile. 'a' è una cifra esadecimale.


L'aggiunta della sintassi ";;&" consente al case di continuare con il test successivo anziché semplicemente terminare.


Il miglior sistema operativo cloud computing su OnWorks: