Tre tipi di loop sono utilizzati in bash per vari scopi. Questi sono per, mentre e fino loop. I diversi usi di questi loop sono spiegati utilizzando 30 diversi esempi in questo articolo.
Usi di Bash loop:
- Utilizzo di for loop per leggere gli elementi in un elenco
- Utilizzo di for loop per leggere un array
- Utilizzo di for loop per leggere un elenco di valori stringa con spazi
- Utilizzo di for loop in {START..FINE..INCREMENTO} intervallo
- Utilizzando per il ciclo in {START..FINE..INCREMENTO} gamma andando indietro
- Utilizzando per il ciclo con 3 componenti e condizione del contatore
- Uso del ciclo for con 3 parti e più condizioni e azioni con virgola
- Utilizzo di Infinite loop
- Utilizzando per il ciclo con la condizionale break e continue
- Utilizza un ciclo for per leggere i nomi di file da glob
- Utilizza un ciclo for per leggere l’output dal comando find
- Utilizzando il ciclo for per leggere i nomi di file di una directory in modo ricorsivo
- Utilizza un ciclo for per leggere i nomi di file di una directory in modo ricorsivo con la condizione
- Esecuzione del loop fino a quando il file esiste
- Utilizzando per il ciclo di base sull’uscita della lista dei pacchetti comando
- Utilizza un ciclo for per leggere ogni riga di un file
- Utilizza un ciclo for per leggere ogni riga di un file basato su un condizionale match
- Uso del ciclo while con un contatore
- Uso del ciclo while con l’input dell’utente e uscire quando la selezione uscire dal menu
- combinazione di cicli while con getopts
- Utilizzando fino a quando il ciclo con un contatore
- termina fino a loop in base all’input dell’utente
- Utilizzo di cicli while annidati
- Utilizzando fino al ciclo sonno/di attendere per l’attività in background iniziato script
- Uso del ciclo while per leggere pid dal ps di uscita che non è terminato
- Ricerca di qualsiasi stringa in un file con loop e di uscita
- Combinazione di bash con l’arricciatura a valutare i dati di URL
- Lettura di dati da un porto inviare dall’netcat utilizzando ciclo while
- ping URL utilizzando loop
- top in Esecuzione in modalità batch utilizzando un ciclo e registrare l’uscita
- Uso del ciclo for per leggere gli elementi in un elenco
- Utilizzo di for loop per leggere un array
- Uso di for loop per leggere un elenco di valori di stringa con spazi
- Usando per loop in {START..FINE..INCREMENTO} range
- Usando per loop in {START..FINE..INCREMENTO} intervallo andando indietro
- Utilizzo di for loop con 3 parti e condition counter
- Utilizzo del ciclo for con 3 parti e più condizioni e azioni con virgola
- Usando Infinite for loop
- Utilizzo del ciclo for con interruzione condizionale e continua
- Usare for loop per leggere i nomi dei file tramite globbing
- Utilizzo di for loop per leggere l’output dal comando find
- Usare for loop per leggere i nomi dei file di una directory in modo ricorsivo
- Usare for loop per leggere i nomi dei file di una directory in modo ricorsivo con la condizione
- Eseguire il ciclo fino a quando il file esiste
- Usando for loop in base all’output del comando package list
- Uso di for loop per leggere le righe di un file
- Utilizzo di for loop per leggere le righe di un file con corrispondenza condizionale
- Utilizzo del ciclo while con un contatore
- Utilizzo del ciclo while con input dell’utente e esci quando selezioni Esci dal menu
- Combinare while loop con getopts
- Utilizzo di until loop con un contatore
- Termina until loop in base all’input dell’utente
- Utilizzo di cicli while nidificati
- Utilizzando until loop per dormire/attendere l’attività in background avviata nello script
- Utilizzo del ciclo while per leggere il pid dall’output ps che non è terminato
- Ricerca qualsiasi stringa in un file utilizzando loop ed esci
- Combina bash con curl per valutare i dati dall’URL
- Lettura dei dati da una porta inviata da netcat utilizzando il ciclo while
- URL ping usando un loop
- Esecuzione di top in modalità batch utilizzando un ciclo e registrare l’output
- Conclusione
Uso del ciclo for per leggere gli elementi in un elenco
Il più semplice utilizzo di un ciclo ‘for’, è leggere una lista di stringhe o di dati numerici. L’elenco dei dati numerici viene iterato utilizzando il ciclo for-in nell’esempio seguente. Qui, quattro numeri verranno letti nella variabile, n n in ogni fase del ciclo e stampati. Creare un file bash con il seguente script ed eseguire dal terminale.
# for-in loop per leggere un elenco di numeri
per n in 10 11 17 25
do
# Stampa ogni numero
echo “Il numero è n n”
done
Output:
Esegui lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Utilizzo di for loop per leggere un array
Qualsiasi variabile array contiene un elenco di dati che possono essere iterati molto facilmente utilizzando for-in loop. L’esempio seguente mostra l’uso del ciclo for-in per leggere un array di dati stringa. Qui, ogni valore dell’array recupererà nella variabile, language language e stamperà un messaggio in base alla lingua in ogni iterazione.
lingue=(“Bash, PERL, Python, PHP”)
per la lingua in $lingue
do
se
poi
echo “$language è un linguaggio di programmazione di fotoricettore”
else
echo “$language è un linguaggio di scripting”
fi
fatto
Output:
Eseguire lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Uso di for loop per leggere un elenco di valori di stringa con spazi
Quando un elenco di una stringa viene letto da for-in loop e qualsiasi valore di stringa contiene spazio, i valori vengono suddivisi in parole in base allo spazio se il valore della stringa non è citato con una citazione singola o doppia. L’esempio seguente mostra come un elenco di valori di stringa con spazio può essere letto dal ciclo for-in. Qui, un valore dell’elenco contiene spazio e viene stampato con lo spazio nell’output.
# for-in loop per leggere l’elenco di stringhe con spazio
per os in “Ubuntu “”Linux Mint “”Fedora “”CentOS”
do
# Stampa ogni stringa
echo “Operating System – $os”
done
Output:
Esegui lo script.
Qui, il valore della stringa, ‘Linux Mint’ viene stampato correttamente.
Vai all’inizio
Usando per loop in {START..FINE..INCREMENTO} range
Un altro uso di for-in loop è quello di leggere range array. Nell’esempio seguente, un ciclo for viene utilizzato per leggere un intervallo di dati da 10 a 30 che viene incrementato di 5 in ogni passaggio. Successivamente, lo script stamperà quei numeri nell’intervallo che sono divisibili per 10.
# Leggi un intervallo usando for loop
per num in {10..30..5}
fai
# Controlla che il numero sia divisibile per 10 o meno
se ((n num%10==0 ))
quindi
echo “n num è divisibile per 10”
fi
fatto
Output:
Esegui lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Usando per loop in {START..FINE..INCREMENTO} intervallo andando indietro
L’intervallo di dati può essere letto all’indietro utilizzando il ciclo for-in in cui il valore iniziale dell’intervallo è maggiore del valore finale dell’intervallo. Nell’esempio seguente, l’intervallo inizierà da 50 e terminerà a 30. Il valore di n num sarà decrementato di 10 in ogni fase del ciclo. Lo script stamperà quei numeri dall’intervallo che sono divisibili per 5 e 10.
echo “I seguenti numeri sono divisibili per 5 e 10”
# Leggi un intervallo usando for loop
per num in {50..30..10}
fai
# Controlla che il numero sia divisibile per 5 e 10 o no
se ((n num%5==0 && $num%10==0 ))
quindi
echo-n “n num”
fi
fatto
echo “Fatto”
Output:
Eseguire lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Utilizzo di for loop con 3 parti e condition counter
Bash supporta loop con tre parti come altri linguaggi di programmazione standard. La prima parte contiene l’inizializzazione, la seconda parte contiene la condizione di terminazione e la terza parte contiene l’operazione di incremento o decremento. Questo ciclo viene utilizzato principalmente quando il numero di iterazione è stato precedentemente definito. Nell’esempio seguente, for loop itererà per 50 volte e calcolerà la somma da 1 a 50. Il risultato della somma verrà stampato come output.
# Inizializza la variabile
somma=0
# Ciclo viene ripetuto per 50 volte
per (( n=1; n<=50; n++ ))
do
# Aggiungere il valore della somma con il valore successivo di n
((somma=$somma+$n))
fatto
# Stampa il risultato
echo “La somma di 1 a 50 $somma”
Uscita:
Eseguire lo script.
La somma da 1 a 50 viene visualizzata nell’output.
Vai all’inizio
Utilizzo del ciclo for con 3 parti e più condizioni e azioni con virgola
Il ciclo For con tre parti può essere definito con più inizializzazioni, condizioni di terminazione e azioni. L’esempio seguente mostra l’uso di questo tipo di ciclo. Qui, le variabili x x e y y sono inizializzate da 5 e 25. Il ciclo continuerà fino a quando il valore di x x è minore o uguale a 20 e il valore di y y è maggiore di 5. Il valore di x x aumenterà di 5 e il valore di y y diminuirà di 5 in ogni iterazione del ciclo. Il valore corrente di x x e y y in ogni passaggio verrà stampato come output.
# Ciclo viene ripetuto basa su due condizioni
per (( x=5,y=25; x<=20 && y>5; x+=5,y=5 ))
do
echo “Il valore corrente di x=$x e y=y$”
fatto
Output:
Eseguire lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Usando Infinite for loop
Quando un ciclo viene definito senza alcuna condizione di terminazione, il ciclo funziona come un ciclo infinito. L’esempio seguente mostra l’uso di infinite for loop che non contiene parti di inizializzazione, terminazione e azione. Questo tipo di ciclo for è definito da doppio punto e virgola (; ;). Il seguente script continuerà il ciclo fino a quando l’utente digita ‘quit’ come input. Lo script stamperà qualsiasi numero da 1 a 20 che prenderà come input altrimenti stamperà “Il numero è fuori intervallo”
# Dichiarare ciclo infinito
per (( ; ; ))
do
# Prendere un input
echo “Inserire un numero tra 1 e 20”
leggi n
# Imposta la condizione di terminazione del ciclo
se
poi
echo “Programma terminato”
exit 0
fi
# Controllare il numero di serie & 8722>if (( $n < 1 || $n > 20 ))
poi
echo “Il numero è fuori gamma”
else
echo “Il numero $n”
fi
fatto
Output:
Eseguire lo script.
Qui, 6 viene preso come primo input che è un numero valido, 22 viene preso come secondo input che è un numero non valido e quit viene preso come terzo input che ha terminato lo script.
Vai all’inizio
Utilizzo del ciclo for con interruzione condizionale e continua
l’istruzione’continue’ viene utilizzata per omettere alcune parti del ciclo in base a qualsiasi condizione e l’istruzione ‘break’ viene utilizzata per terminare il ciclo in base a qualsiasi condizione. L’esempio seguente mostra gli usi di queste istruzioni in un ciclo for. Qui, il ciclo viene utilizzato per leggere un elenco di dati stringa e ogni valore nell’elenco viene memorizzato nella variabile, food food. Quando il valore di food food è ‘Soup’, continuerà il ciclo senza stampare il valore. Quando il valore di food food è ‘Pasta’, terminerà il ciclo. Quando $food contiene qualsiasi valore diverso da ‘Soup’ e ‘Pasta’, stamperà il valore. Quindi, lo script stamperà due valori dall’elenco come output.
# Dichiarare un ciclo con un elenco di
per il cibo in Pizza Zuppa di Burger Tagliatelle di Pasta
do
# Impostare la condizione per continuare
se
poi
continua
# Impostare la condizione per la pausa
elif
poi
pausa
else
echo “$cibo è il mio preferito”
fi
fatto
Output:
Eseguire lo script.
Qui, due valori vengono omessi dall’elenco. ‘Soup ‘non viene stampato per l’istruzione continua e’ Pasta ‘ non viene stampato per l’istruzione break.
Vai all’inizio
Usare for loop per leggere i nomi dei file tramite globbing
I nomi dei file o il contenuto particolare di un file possono essere cercati usando globbing. Esso utilizza diversi tipi di caratteri jolly per la corrispondenza qualsiasi nome di file o la ricerca di contenuti nel file. Tutti i file con estensione txt della posizione corrente vengono cercati stampati dal seguente esempio. Quando si esegue lo script, tutti i nomi di file corrispondenti verranno stampati senza nuova riga come output.
# Loop cercherà tutti i file di testo e memorizzerà ogni nome file in file file
per il file in”*.txt”;
do
# Stampa il nome del file
echo file file;
done
Output:
Esegui lo script.
Vai all’inizio
Utilizzo di for loop per leggere l’output dal comando find
Il comando’find’ viene utilizzato per scopi diversi in bash. Nell’esempio seguente, il comando ‘trova’ viene utilizzato per leggere tutti i nomi di file di testo dalla posizione corrente. Qui,’ – name ‘ opzione da utilizzare per la ricerca case-sensitive. Quindi, lo script stamperà quei nomi di file della posizione corrente che hanno il’.estensione txt ‘ con qualsiasi nome. Qui, la variabile IFS viene utilizzata per definire la nuova riga come separatore di campo e stampare il valore di file file in ogni riga.
# Imposta il separatore di campo
IFS = I’ \ n’;
# Leggi i file di una directory
per il file in file (find-name”*.txt”); do
echo file file
done
#Uunset field separator
unset IFS;
Output:
Eseguire lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Usare for loop per leggere i nomi dei file di una directory in modo ricorsivo
Il comando’find’ può essere usato per leggere tutti i file e le sottocartelle di una particolare directory. L’esempio seguente mostra l’uso del comando ‘find’ per leggere tutti i nomi di file e le directory nella directory ‘mydir’. Qui, la variabile IFS viene utilizzata per stampare il valore di fil filename con ‘newline’ come nell’esempio precedente.
# Imposta separatore di campo
IFS = I’ \ n’;
# Leggi i file di una directory
per filename in $(find “mydir”)
do
echo “fil filename”
done
# Unset field separator
unset IFS;
Output:
Eseguire lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Usare for loop per leggere i nomi dei file di una directory in modo ricorsivo con la condizione
‘for’ loop con il comando ‘find’ può essere usato per stampare som+
e particolari nomi di file di una directory in base a qualsiasi condizione. il comando ‘trova’ viene utilizzato con una condizione nell’esempio seguente. Cercherà solo i nomi dei file di testo della directory mydir. Qui, l’opzione ‘- iname ‘viene utilizzata con il comando ‘find’ per la ricerca case incensitive. Ciò significa che tutti i file con estensione ‘ txt ‘o’ TXT ‘ saranno abbinati e stampati come output. Qui, la variabile IFS viene utilizzata per stampare il valore di fil filename con ‘newline’ come nell’esempio precedente.
# Imposta il separatore di campo
IFS = I’ \ n’;
# Leggi tutti i file di testo di una directory
per il nome file in my(trova mydir-iname’*.txt’); do
echo “fil filename”
done
# Unset field separator
unset IFS;
Output:
Eseguire il seguente comando per visualizzare l’elenco di file e cartelle della directory mydir.
Esegue lo script.
Ci sono tre file di testo nella directory che vengono visualizzati nell’output.
Vai all’inizio
Eseguire il ciclo fino a quando il file esiste
Qualsiasi nome di file esiste o non è controllato nel seguente esempio utilizzando infinite for loop. In questo script, un nome file prenderà come input in ogni iterazione del ciclo e verificherà che il nome del file sia presente nella posizione corrente o meno. Se il nome del file esiste, lo script stamperà “File exists” e continuerà il ciclo altrimenti terminerà il ciclo stampando il messaggio, “File does not exist”.
# Define infinite loop
for(( ; ; ))
do
# Input a filename
echo “Enter a file name”
read file
# Check the file exists or not
if
then
echo “Filename does not exist”
exit 0
else
echo “File exists”
fi
done
Output:
Esegui lo script.
Un nome file esistente viene dato come primo input e un nome file non esistente viene dato come secondo output che ha terminato lo script.
Vai all’inizio
Usando for loop in base all’output del comando package list
Le informazioni sui pacchetti installati nel sistema possono essere recuperate dal comando `apt list – -installed`. il ciclo’ for ‘ viene utilizzato nell’esempio seguente per leggere le informazioni del pacchetto installato dal comando package list e stampare ogni informazione del pacchetto in ogni riga. La variabile IFS viene utilizzata qui per stampare il valore di line line con ‘newline’ come nell’esempio precedente.
IFS = I’ \ n’;
# Leggi file riga per riga
per riga in $(apt list installed installed)
do
echo “line line”
done
# Unset field separator
unset IFS;
Output:
Eseguire lo script.
L’output mostra l’elenco dei pacchetti installati.
Vai all’inizio
Uso di for loop per leggere le righe di un file
Ci sono molti modi per leggere un file in bash. comando ‘ cat ‘ viene utilizzato nel seguente esempio per leggere il file, temp.txt. Ogni riga del file verrà memorizzata nella variabile, line line e stamperà la riga in ogni iterazione del ciclo for. La variabile IFS viene utilizzata qui per stampare il valore di line line con ‘newline’ come nell’esempio precedente.
# Imposta separatore di campo
IFS = I’ \ n’;
# Leggi file riga per riga
per riga in temp (cat temp.txt)
do
echo “line line”
done
# Unset field separator
unset IFS;
Output:
Eseguire lo script.
Vai all’inizio
Utilizzo di for loop per leggere le righe di un file con corrispondenza condizionale
Se si desidera stampare solo linee particolari da un file, è necessario aggiungere all’interno del ciclo utilizzato per leggere il file. L’esempio seguente stampa l’output formattato di ogni riga di ‘ giorno della settimana.file txt ‘ basato su una condizione. Se una riga del file contiene il valore, ‘Domenica’, stamperà il messaggio ‘vacanza’ altrimenti stamperà il messaggio ‘giorno lavorativo’.
per la riga in cat (cat giorno della settimana.txt)
do
# Confronta il valore con una stringa data
if
then
echo “line line is a holiday”
else
echo “line line is a working day”
fi
done
Output:
Esegui lo script.
Dopo l’esecuzione dello script verrà visualizzato il seguente output.
Vai all’inizio
Utilizzo del ciclo while con un contatore
variable la variabile counter viene utilizzata in qualsiasi ciclo per controllare l’iterazione del ciclo. L’esempio seguente mostra l’uso del ciclo while con il contatore. Qui, counter counter viene inizializzato su 1 e while loop itererà 5 volte e stamperà il valore di counter counter in ogni iterazione. $contatore viene incrementato di 1 in ogni passaggio per raggiungere la condizione di terminazione del ciclo.
# Inizializza counter
counter = 1
# Itera il ciclo per 5 volte
mentre
do
echo “Counter value = counter counter”
((counter++))
done
Output:
Esegui lo script.
Vai all’inizio
Il ciclo while viene utilizzato nell’esempio seguente per visualizzare un menu di 5 opzioni. Le prime quattro opzioni vengono utilizzate per eseguire quattro operazioni aritmetiche in base all’input dell’utente e l’ultima opzione viene utilizzata per uscire dallo script. Il menu apparirà dopo aver fornito due numeri come input. Se l’utente seleziona ‘1’, verranno aggiunti i numeri di input. Se l’utente seleziona ‘2’, il secondo numero di input verrà sottratto dal primo numero di input. Se l’utente seleziona ‘3’, i numeri di input verranno moltiplicati e se l’utente seleziona’ 4′, il primo numero di input verrà diviso per il secondo numero di input.
# Prendi due numeri
echo “Inserisci un numero”
leggi n1
echo “Inserisci un numero”
leggi n2
# Dichiara un ciclo infinito
mentre true
do
# Visualizza il menu
echo ” 1. Aggiunta “
eco ” 2. Sottrazione “
eco ” 3. Moltiplicazione “
eco ” 4. Divisione “
echo ” 5. Esci da “
echo-n ” Seleziona un numero qualsiasi da :”
leggi# Eseguire l’operazione in base al valore selezionato
se ]
poi
((risultato=n1+n2))
elif ]
poi
((risultato=n1-n2))
elif ]
poi
((risultato=$n1*$n2))
elif ]
poi
((risultato=$n1/$n2))
elif ]
poi
exit 0
else
echo “input non Valido”
fi
echo “Il risultato è di $risultato”
fatto
Output:
Eseguire lo script.
Dopo aver selezionato le opzioni 2 e 5 verrà visualizzato il seguente output.
Vai all’inizio
Combinare while loop con getopts
‘getopts’ è una funzione integrata di bash che viene utilizzata per leggere argomenti e opzioni nello script bash. L’esempio seguente mostra l’uso della funzione getopts che viene utilizzata in un ciclo while. Qui, tre valori di opzione vengono utilizzati con getopts. Questi sono ‘a’, ‘r’e ‘ c’. Verranno stampati tre diversi messaggi per queste opzioni.
# Leggere l’opzione e memorizzare in una variabile
mentre getopts” arc ” opzione; do
# Controlla il valore dell’opzione
case case{option} in
a ) #option a
echo “Il processo viene interrotto”
;;
r ) #option r
echo “Il processo viene riavviato”
;;
c ) #option c
echo “Il processo continua”
;;
\? ) # opzione non valida
echo ” Use: or or “
;;
esac
done
Output:
Esegui lo script con opzioni valide.
Eseguire lo script con un’opzione non valida.
Vai all’inizio
Utilizzo di until loop con un contatore
Until loop può essere utilizzato con un contatore come while loop mostrato prima. L’esempio seguente mostra l’uso di until loop con un contatore. Qui, la variabile counter counter viene utilizzata per controllare l’iterazione del ciclo inizializzato su 1. Il ciclo until continuerà fino al valore di counter counter a 5. Quindi, il ciclo itererà per 6 volte e stamperà il valore counter counter in ogni passaggio. counter contatore sarà decremento di 1 in ogni passo per raggiungere la condizione di terminazione del ciclo.
# Inizializza il contatore
counter = 10
# Itera il ciclo per 6 volte
fino a
do
echo “Il valore corrente di counter = counter counter”
((counter–))
done
Output:
Esegui lo script .
Vai all’inizio
Termina until loop in base all’input dell’utente
Qualsiasi ciclo termina in base a una particolare condizione. Come fino a quando il ciclo può essere terminato in base all’input dell’utente, è mostrato nel seguente esempio. In base alla condizione di terminazione, il ciclo terminerà quando il valore di number number è maggiore di 50. Il valore di number number non viene incrementato all’interno del ciclo. Cosi., il ciclo continuerà a prendere l’input dall’utente fino a quando un numero di più di 50 è preso come input.
# Inizializza numero
numero = 0
# Imposta il modello per i dati numerici
modello=’^+$’
# Imposta la condizione di terminazione
fino a
do
echo-n “Inserisci un numero: “
leggi il numero
# Controlla che il valore di input sia numero o meno
se ! ]
poi
echo “errore: Non un numero “
number=0
else
echo “Hai inserito number number”
fi
done
Output:
Esegui lo script.
Lo script itererà nuovamente il ciclo per il valore di input 4, visualizzerà il messaggio di errore per il valore di input, gg e terminerà il ciclo per il valore di input 54.
Vai all’inizio
Utilizzo di cicli while nidificati
Quando un ciclo viene dichiarato all’interno di un altro ciclo, viene chiamato ciclo infinito. L’esempio seguente mostra l’uso del ciclo while nidificato. Qui, il primo ciclo while itererà per 2 volte e il secondo ciclo while all’interno del primo ciclo itererà per tre volte. L’iterazione totale dei loop sono 2×3 = 6 volte. le variabili $i e j j vengono utilizzate per controllare l’iterazione di questi loop e i valori di queste variabili in ogni passaggio vengono stampati come output.
# Inizializza i e j
i=1
j=1
# Imposta la condizione di terminazione per i
mentre
do
# Imposta la condizione di terminazione per j
mentre
do
# Stampa il valore corrente di i e j
printf “i=%d, j=%d\n” $i $j
((j++))
fatto
j=1
((i++))
fatto
Output:
Eseguire lo script.
Vai all’inizio
Utilizzando until loop per dormire/attendere l’attività in background avviata nello script
Qualsiasi processo può essere eseguito in background utilizzando il simbolo ‘ &’. Come un processo può essere eseguito in background utilizzando until loop e terminare il ciclo in base al tempo specificato nel comando sleep è mostrato in questo esempio. Qui, la variabile cn cnt viene utilizzata per terminare il ciclo. Il ciclo avvierà il processo in background e scriverà l’output in un file di testo denominato “output.txt ” per 1 secondo. Successivamente, la condizione di terminazione del ciclo verrà verificata e restituirà false. Successivamente, lo script stamperà un messaggio, “Sleeping…” e uscirà dallo script dopo 3 secondi.
# Inizializza contatore
cnt=1
# Imposta la condizione di terminazione
fino a
do
echo “Il processo in background è in esecuzione”;
# Attendi 1 secondo
sleep 1;
((cnt++))
done > output.txt &
# Attendere 3 secondi
echo “Sleeping…”
dormire 3
Output:
Eseguire lo script.
Controlla l’output dello script.
Vai all’inizio
Utilizzo del ciclo while per leggere il pid dall’output ps che non è terminato
Il comando’ps’ viene utilizzato per ottenere informazioni su tutti i processi in esecuzione del sistema. Fornisce informazioni dettagliate su qualsiasi processo in esecuzione come ID utente, PID, utilizzo della cpu, utilizzo della memoria, ecc. L’esempio seguente mostra come un ciclo while può essere utilizzato per leggere le informazioni sul processo in esecuzione relative a ‘apache’. Qui, la variabile IFS viene utilizzata per stampare il PID di ogni processo con una nuova riga. Successivamente, attenderà che l’utente premi un tasto qualsiasi per uscire dallo script.
# Imposta il separatore di campo
IFS = ”
mentre
fai
# Recupera tutto l’id del processo in esecuzione di apache
pid=`ps-ef | grep “apache” | awk ‘{print 2 2 ” il processo è in esecuzione …”}”
echo $pid
# Attendere 1 secondo
sleep 1
# Premere un tasto qualsiasi per terminare il ciclo
echo “Premere un tasto qualsiasi per terminare”
se leggi -r -N 1
pausa
fi
fatto
# Unset separatore di campo
unset IFS
Output:
Eseguire lo script.
Il PID di tutti i processi in esecuzione basati su ‘apache’ viene mostrato nell’output.
Vai all’inizio
Ricerca qualsiasi stringa in un file utilizzando loop ed esci
Crea un file denominato month.txt con il seguente contenuto per testare lo script bash indicato di seguito.
mese.txt
February
March
April
May
June
July
August
September
October
November
December
‘mentre’ ciclo viene utilizzato nel seguente esempio per leggere mese.file txt riga per riga. Se una riga contiene il valore, ‘June’, stamperà “Enjoy summer vacation” e terminerà dallo script altrimenti stamperà il valore di line line.
# Imposta il nome del file in lettura
nomefile= ” mese.txt”
# Leggere il file riga per riga
mentre IFS= read-r line
do
# Controllare il valore della linea è pari a giugno
# Terminare il programma se la condizione è vera
se ];
poi
echo “Godersi la vacanza Estiva”
exit 0
else
echo $riga
fi
fatto < $filename
Output:
Eseguire lo script.
Qui, ‘Giugno’ esiste nel mese del file.txt che termina il ciclo. Quindi, altri nomi di mesi dopo “giugno” non verranno letti dal ciclo.
Vai all’inizio
Combina bash con curl per valutare i dati dall’URL
I dati possono essere trasferiti da o verso qualsiasi server di rete in bash usando il comando ‘curl’ con qualsiasi protocollo supportato come HTTP, FTP, TELNET, ecc. È uno strumento da riga di comando. Come comando ‘curl’ può essere utilizzato per valutare i dati da URL utilizzando for loop è mostrato nel seguente esempio. Qui, for loop leggerà un elenco di URL e passerà ogni valore URL nel ricciolo e stamperà i dati ricevuti dall’URL.
# Leggi ogni URL dalla lista
per url in “yahoo.com” “youtube.com”
do
# Stampa il codice di risposta HTTP per ogni URL
echo url url; curl-v-m 5 – s 1 1″ url url ” / grep HTTP / 1.1;
done
Output:
Esegui lo script.
Vai all’inizio
Lettura dei dati da una porta inviata da netcat utilizzando il ciclo while
Il comando’netcat’ viene utilizzato per leggere e scrivere dati sulla rete utilizzando il protocollo tcp o udp. il comando ‘ nc ‘viene utilizzato in bash per eseguire il comando ‘netcat’. L’esempio seguente mostra l’uso del comando ‘nc’ nel ciclo while. Qui, lo script proverà a connettersi con la porta 1234 usando il comando nc e stamperà un messaggio nell’altro terminale se può connettersi. È necessario aprire un’altra finestra o scheda del terminale per eseguire il comando, ‘nc localhost 1234’ per effettuare una connessione. Dopo aver stabilito la connessione, qualsiasi messaggio può essere trasferito da un terminale a un altro terminale.
echo ” In ascolto sulla porta 1234 …”
# Leggi il messaggio passato da netcat alla porta 1234
mentre leggi il testo
fai
# Termina il ciclo se il messaggio ricevuto è “quit”
if ; poi
echo “Bye”
break
else
echo “text text”
fi
# Stampa il messaggio quando la porta è connessa
fatto < <((printf “Benvenuto.\ r \ ntigitare un messaggio :|) / nc-l 1234)
Uscita:
Eseguire lo script in un terminale per avviare l’ascolto sulla porta 1234.
Quindi, aprire un altro terminale ed eseguire il seguente comando per comunicare con
il primo terminale.
Mostrerà un messaggio di benvenuto nel secondo terminale. Se l’utente digita qualcosa nel secondo terminale, verrà visualizzato nel primo terminale. Quando l’utente digita ‘esci’ nel secondo terminale, lo script terminerà visualizzando un messaggio, ‘ Bye ‘ nel primo terminale.
Vai all’inizio
URL ping usando un loop
Puoi scoprire che qualsiasi sito Web è live o meno eseguendo il comando ‘ping’ con l’URL del sito. il comando’ ping ‘ viene utilizzato con ‘google.com’ nel seguente esempio per verificare che la connessione Internet funzioni o meno. Mentre il ciclo itererà 5 volte nello script e proverà a eseguire il ping google.com. Se il server risponde, stamperà “Internet funziona” e terminerà il ciclo. Se il ciclo itera 5 volte e non ottiene alcuna risposta del server, stamperà “Nessuna connessione Internet”.
# Imposta il contatore
count=5
mentre ]
do
# Provare a eseguire il ping google.com
ping-c 1 google.com
c=$?
# Controllare il codice di stato
se ]
poi
echo “Internet è funzionante”
exit 0
fi
# Decrementare il contatore
((count–))
fatto
echo “Nessuna connessione a Internet”
Uscita:
Eseguire lo script.
Si otterrà un output simile se la connessione Internet funziona correttamente.
Vai all’inizio
Esecuzione di top in modalità batch utilizzando un ciclo e registrare l’output
‘top’ comando è uno strumento di amministrazione Linux che viene utilizzato per esaminare l’utilizzo delle risorse di sistema, gestire diverse attività e monitorare i processi in esecuzione. Come è possibile eseguire il comando ‘top’ in modalità batch utilizzando for loop e memorizzare i record in un file di testo è mostrato nel seguente esempio. Qui, l’opzione-b viene utilizzata per avviare il comando ‘top’ in modalità batch e l’opzione-p viene utilizzata per impostare l’ID del processo che si desidera monitorare. L’output del comando ‘ top ‘ verrà memorizzato in output.file txt.
# Loop itererà per 5 volte ed eseguirà il comando top
per ((i=0; i<5; i++))
do
top-b-p 2875-n1 | tail -1 >> output.txt
done
Output:
Per prima cosa, esegui il seguente comando per trovare l’elenco dei processi in esecuzione.
Ora, esegui lo script.
Eseguire il seguente comando per visualizzare l’output dello script.
Vai all’inizio
Conclusione
I loop possono essere utilizzati in bash in vari modi per eseguire diversi tipi di attività semplici o complesse. Come tre tipi di loop possono essere utilizzati in bash per compiti diversi come il recupero di elenchi o array, la lettura di file o qualsiasi output di comando, ecc. sono mostrati in questo articolo utilizzando esempi molto semplici. Spero che questi esempi aiuteranno il lettore a capire più chiaramente gli usi del ciclo bash.