<Precedenti | Contenuti | Succ.>
while
bash può esprimere un'idea simile. Supponiamo di voler visualizzare cinque numeri in sequenza:
ordine iniziale da uno a cinque. a bash lo script potrebbe essere costruito come segue:
#! / Bin / bash
# while-count: visualizza una serie di numeri count=1
while [[ $count -le 5 ]]; do echo $count count=$((count + 1))
fatto
echo "Finito."
#! / Bin / bash
# while-count: visualizza una serie di numeri count=1
while [[ $count -le 5 ]]; do echo $count count=$((count + 1))
fatto
echo "Finito."
Una volta eseguito, questo script visualizza quanto segue:
[io@linuxbox~]$ conteggio-mentre
1
2
3
4
5
Finito.
[io@linuxbox~]$ conteggio-mentre
1
2
3
4
5
Finito.
La sintassi di while il comando è:
while comandi; fare comandi; Fatto
Come if, while Valuta lo stato di uscita di un elenco di comandi. Finché lo stato di uscita è zero, esegue i comandi all'interno del ciclo. Nello script precedente, la variabile contare viene creato e gli viene assegnato un valore iniziale di 1. Il while il comando valuta lo stato di uscita del [[]] comando composto. Finché il [[]] il comando restituisce uno stato di uscita pari a zero, i comandi all'interno del ciclo vengono eseguiti. Alla fine di ogni ciclo, il [[]] il comando viene ripetuto. Dopo cinque iterazioni del ciclo, il valore di contare è aumentato a 6, il [[]] Il comando non restituisce più uno stato di uscita pari a zero e il ciclo termina. Il programma continua con l'istruzione successiva al ciclo.
Possiamo usare un file mentre il ciclo per migliorare il menu di lettura programma del capitolo precedente:
#! / Bin / bash
# while-menu: un programma di informazioni di sistema guidato da menu
#! / Bin / bash
# while-menu: un programma di informazioni di sistema guidato da menu
RITARDO=3 # Numero di secondi per visualizzare i risultati
mentre [[ $REPLY != 0 ]]; fai
pulire campo
gatto <<- _EOF_
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci
_EOF_
leggi -p "Inserisci selezione [0-3] > "
se [[ $REPLY =~ ^[0-3]$ ]]; allora se [[ $REPLY == 1 ]]; allora
echo "Nome host: $HOSTNAME" tempo di attività
sonno $DELAY
fi
se [[ $REPLY == 2 ]]; allora df -h
sonno $DELAY
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
fi
sonno $DELAY
fi
altro
echo "Voce non valida."
sonno $DELAY
fi
fatto
echo "Programma terminato."
RITARDO=3 # Numero di secondi per visualizzare i risultati
mentre [[ $REPLY != 0 ]]; fai
pulire campo
gatto <<- _EOF_
Seleziona:
1. Visualizza le informazioni di sistema
2. Visualizza lo spazio su disco
3. Visualizza l'utilizzo dello spazio domestico
0. Esci
_EOF_
leggi -p "Inserisci selezione [0-3] > "
se [[ $REPLY =~ ^[0-3]$ ]]; allora se [[ $REPLY == 1 ]]; allora
echo "Nome host: $HOSTNAME" tempo di attività
sonno $DELAY
fi
se [[ $REPLY == 2 ]]; allora df -h
sonno $DELAY
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
fi
sonno $DELAY
fi
altro
echo "Voce non valida."
sonno $DELAY
fi
fatto
echo "Programma terminato."
Racchiudendo il menu in un ciclo while, possiamo far sì che il programma ripeta la visualizzazione del menu dopo ogni selezione. Il ciclo continua finché REPLY non è uguale a "0" e il menu viene visualizzato nuovamente, dando all'utente la possibilità di effettuare un'altra selezione. Al termine di ogni azione, un sonno il comando viene eseguito in modo che il programma si interrompa per alcuni secondi per consentire la visualizzazione dei risultati della selezione prima che lo schermo venga cancellato e il menu venga nuovamente visualizzato. Una volta REPLY è uguale a "0", indicando la selezione "esci",
il ciclo termina e l'esecuzione continua con la riga seguente fatto.