Ciclo while
Fa parte della sezione Fondamenti del percorso Terminal di Coddy. Lezione 72 di 82.
Il ciclo for è perfetto quando sai esattamente quali elementi iterare. Ma cosa succede se vuoi continuare a eseguire il ciclo finché una determinata condizione non cambia? È qui che entra in gioco il ciclo while.
Un ciclo while continua a essere eseguito finché la sua condizione rimane vera. Ecco la struttura di base:
#!/bin/bash
count=1
while [ $count -le 5 ]; do
echo "Count: $count"
count=$((count + 1))
doneQuesto script stampa i numeri da 1 a 5.
Il ciclo verifica se count è minore o uguale a 5. Se è vero, esegue il corpo, incrementa il contatore usando $((...)) per l’aritmetica e verifica di nuovo.
Quando count raggiunge 6, la condizione diventa falsa e il ciclo si interrompe.
I cicli while sono perfetti quando non sai in anticipo quante iterazioni ti servono. Per esempio, potresti continuare a chiedere un input finché l'utente non digita "quit":
#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
read -p "Enter command (quit to exit): " input
echo "You entered: $input"
doneFai attenzione ai cicli while. Se la condizione non diventa mai falsa, il ciclo continua all’infinito.
Assicurati sempre che qualcosa all'interno del ciclo finisca per modificare la condizione, ad esempio incrementando un contatore o aggiornando una variabile in base all'input dell'utente.
Sfida
FacileCrea uno script shell chiamato counter.sh che usa un ciclo while per stampare i numeri da 1 a 4.
Il tuo script dovrebbe:
- Iniziare con la riga shebang (
#!/bin/bash) - Creare una variabile chiamata
numcon il valore iniziale1 - Usare un ciclo while che continua finché
numè minore o uguale a 4 - All'interno del ciclo, stampare il numero corrente nel formato:
Number: [num] - Incrementare
numdi 1 dopo ogni iterazione usando$((num + 1))
Rendi eseguibile lo script ed eseguilo. Il tuo output dovrebbe essere:
Number: 1
Number: 2
Number: 3
Number: 4Suggerimento: Usa
-leper il confronto "minore o uguale a". Ricordati di incrementare il contatore all'interno del ciclo connum=$((num + 1))per evitare un ciclo infinito. Termina il ciclo while condone.
Provalo tu
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Cartelle
Creare una cartellaCopiare una cartellaSpostare e rinominare una cartellaEliminare una cartellaRiepilogo - Operazioni sulle cartelle7Contenuto dei file
Head e TailConteggio delle paroleComando SortComando UniqueNozioni di base su GrepGrep con opzioniRiepilogo - Detective del testo10Progetto di analisi dei log
Panoramica del progettoVisualizzare il file di log2Navigazione
Stampare la directory di lavoroElencare i fileCambiare directoryPercorsi assoluti e relativiDirectory home e radiceRiepilogo - Trova la tua strada5Progetto di organizzazione delle foto
Panoramica del progettoCreazione della struttura8Reindirizzamento
Uscita standardSovrascrivere un fileAccodare a un fileIngresso standardErrore standardRiepilogo - Creare un log3File
Creare un fileLeggere un fileCopiare un fileSpostare e rinominare un fileEliminare un fileRipasso: operazioni sui file6Caratteri jolly e pattern
Il carattere jolly asteriscoIl carattere jolly punto interrogativoCaratteri jolly tra parentesi quadreCombinare i caratteri jollyRiepilogo - Operazioni selettive9Pipe
Che cos'è una pipeConcatenare due comandiConcatenare più comandiPipe con grepRiepilogo - pipeline dei datiEsercitati da solo: Playground Terminal