<Precedenti | Contenuti | Succ.>
Custodie
In bash, viene chiamato il comando composto a scelta multipla CustodieHa la seguente sintassi:
Custodie parola in
[modello [| modello]...) comandi ;;]...
che C
Se guardiamo al menu di lettura Nel programma del 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
eco "
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci "
leggi -p "Inserisci selezione [0-3] > "
se [[ $REPLY =~ ^[0-3]$ ]]; allora se [[ $REPLY == 0 ]]; allora
#! / Bin / bash
# read-menu: un programma di informazioni di sistema guidato da menu
eco "
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci "
leggi -p "Inserisci selezione [0-3] > "
se [[ $REPLY =~ ^[0-3]$ ]]; allora se [[ $REPLY == 0 ]]; allora
echo "Programma terminato." exit
fi
se [[ $REPLY == 1 ]]; allora echo "Nome host: $HOSTNAME" tempo di attività
exit
fi
se [[ $REPLY == 2 ]]; allora df -h
exit
fi
se [[ $REPLY == 3 ]]; allora
se [[ $(id -u) -eq 0 ]]; allora
echo "Utilizzo dello spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
uscita fi
per altro
echo "Voce non valida." >&2 exit 1
fi
echo "Programma terminato." exit
fi
se [[ $REPLY == 1 ]]; allora echo "Nome host: $HOSTNAME" tempo di attività
exit
fi
se [[ $REPLY == 2 ]]; allora df -h
exit
fi
se [[ $REPLY == 3 ]]; allora
se [[ $(id -u) -eq 0 ]]; allora
echo "Utilizzo dello spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
uscita fi
per altro
echo "Voce non valida." >&2 exit 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
eco "
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo 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." exit
;;
#! / Bin / bash
# case-menu: un programma di informazioni di sistema guidato da menu
eco "
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo 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." exit
;;
1) echo "Nome host: $HOSTNAME" tempo di attività
;;
2) df -h
;;
3) se [[ $(id -u) -eq 0 ]]; allora
echo "Utilizzo dello spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
fi
;;
*) echo "Voce non valida" >&2 exit 1
;;
che C
1) echo "Nome host: $HOSTNAME" tempo di attività
;;
2) df -h
;;
3) se [[ $(id -u) -eq 0 ]]; allora
echo "Utilizzo dello spazio domestico (tutti gli utenti)" du -sh /home/*
altro
echo "Utilizzo dello spazio domestico ($USER)" du -sh $HOME
fi
;;
*) echo "Voce non valida" >&2 exit 1
;;
che C
. Custodie il comando esamina il valore di parola, nel nostro esempio, il valore del REPLY variabile, e quindi tenta di confrontarla con una delle variabili specificate modelliQuando viene trovata una corrispondenza, il comandi associati al pattern specificato vengono eseguiti. Dopo aver trovato una corrispondenza, non vengono tentate ulteriori corrispondenze.