<Precedenti | Contenuti | Succ.>
Menu
Un tipo comune di interattività è chiamato guidato da menuNei programmi basati su menu, all'utente viene presentato un elenco di opzioni e gli viene chiesto di sceglierne una. Ad esempio, potremmo immaginare un programma che presenti quanto segue:
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci
Inserisci la selezione [0-3] >
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci
Inserisci la selezione [0-3] >
Utilizzando ciò che abbiamo imparato scrivendo il nostro pagina_info_sys 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
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] > "
#! / 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
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
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. Si noti l'uso del exit comando in questo script. Viene utilizzato qui per impedire che lo script esegua codice non necessario dopo aver eseguito un'azione. La presenza di più punti di uscita in un programma è generalmente una cattiva idea (rende la logica del programma più difficile da comprendere), ma funziona in questo script.