<Precedenti | Contenuti | Succ.>
Custodie
In bash, viene chiamato il comando composto a scelta multipla Custodie. Ha la seguente sintassi:
Custodie parola in
[modello [| modello]...) comandi ;;]...
che C
Se guardiamo al menu di lettura programma dal Capitolo 28, vediamo la logica utilizzata per agire sulla selezione di un utente:
#! / Bin / bash
# read-menu: un programma di informazioni di sistema guidato da menu chiaro
eco "
Si prega di selezionare:
1. Visualizza le informazioni di sistema
2. Visualizza spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci "
leggi -p "Inserisci selezione [0-3] > "
if [[ $REPLY =~ ^[0-3]$ ]]; allora if [[ $REPLY == 0 ]]; poi
#! / Bin / bash
# read-menu: un programma di informazioni di sistema guidato da menu chiaro
eco "
Si prega di selezionare:
1. Visualizza le informazioni di sistema
2. Visualizza spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci "
leggi -p "Inserisci selezione [0-3] > "
if [[ $REPLY =~ ^[0-3]$ ]]; allora if [[ $REPLY == 0 ]]; poi
echo "Programma terminato." Uscita
fi
if [[ $REPLY == 1 ]]; then echo "Hostname: $HOSTNAME" uptime
exit
fi
if [[ $REPLY == 2 ]]; quindi df -h
exit
fi
if [[ $REPLY == 3 ]]; poi
if [[ $(id -u) -eq 0 ]]; poi
echo "Utilizzo spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
fi uscita
per altro
echo "Voce non valida." >&2 uscita 1
fi
echo "Programma terminato." Uscita
fi
if [[ $REPLY == 1 ]]; then echo "Hostname: $HOSTNAME" uptime
exit
fi
if [[ $REPLY == 2 ]]; quindi df -h
exit
fi
if [[ $REPLY == 3 ]]; poi
if [[ $(id -u) -eq 0 ]]; poi
echo "Utilizzo spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
fi uscita
per altro
echo "Voce non valida." >&2 uscita 1
fi
utilizzando Custodie, possiamo sostituire questa logica con qualcosa di più semplice:
#! / Bin / bash
# case-menu: un programma di informazioni di sistema guidato da menu chiaro
eco "
Si prega di selezionare:
1. Visualizza le informazioni di sistema
2. Visualizza spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci "
leggi -p "Inserisci selezione [0-3] > "
caso $REPLY in
0) echo "Programma terminato." Uscita
;;
#! / Bin / bash
# case-menu: un programma di informazioni di sistema guidato da menu chiaro
eco "
Si prega di selezionare:
1. Visualizza le informazioni di sistema
2. Visualizza spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci "
leggi -p "Inserisci selezione [0-3] > "
caso $REPLY in
0) echo "Programma terminato." Uscita
;;
1) echo "Hostname: $HOSTNAME" uptime
;;
2) df-h
;;
3) if [[ $(id -u) -eq 0 ]]; poi
echo "Utilizzo spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
fi
;;
*) echo "Inserimento non valido" >&2 uscita 1
;;
che C
1) echo "Hostname: $HOSTNAME" uptime
;;
2) df-h
;;
3) if [[ $(id -u) -eq 0 ]]; poi
echo "Utilizzo spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
fi
;;
*) echo "Inserimento non valido" >&2 uscita 1
;;
che C
I Custodie il comando guarda il valore di parola, nel nostro esempio, il valore di REPLY variabile, quindi tenta di confrontarla con una delle variabili specificate modelli. Quando viene trovata una corrispondenza, il comandi associati al modello specificato vengono eseguiti. Dopo che viene trovata una corrispondenza, non vengono tentate ulteriori corrispondenze.