<Precedenti | Contenuti | Succ.>
menu
Viene chiamato un tipo comune di interattività guidato da menu. Nei programmi guidati da menu, all'utente viene presentato un elenco di scelte e viene chiesto di sceglierne una. Ad esempio, potremmo immaginare un programma che presentasse quanto segue:
Si prega di selezionare:
1. Visualizza le informazioni di sistema
2. Visualizza spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci
Inserisci la selezione [0-3] >
Si prega di selezionare:
1. Visualizza le informazioni di sistema
2. Visualizza spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci
Inserisci la selezione [0-3] >
Usando ciò che abbiamo imparato scrivendo il nostro sys_info_page programma, possiamo costruire un programma guidato da menu per eseguire le attività nel menu sopra:
#! / 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] > "
#! / 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
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
Questo script è logicamente diviso in due parti. La prima parte visualizza il menu e inserisce la risposta dell'utente. La seconda parte identifica la risposta ed esegue l'azione selezionata. Notare l'uso di exit comando in questo script. Viene utilizzato qui per impedire che lo script esegua codice non necessario dopo che è stata eseguita un'azione. La presenza di più punti di uscita in un programma è generalmente una cattiva idea (rende più difficile la comprensione della logica del programma), ma funziona in questo script.