Bash fino a loop

Bash fino a loop
Esistono diversi tipi di loop che possono essere utilizzati negli script bash. Per i loop, mentre i loop e fino a quando.

Concettualmente il loop deve essere utilizzato per loop attraverso una serie di elementi come loop tramite ciascun elemento in un array o ogni file in una directory, ecc. Il ciclo while dovrebbe essere usato fintanto che una determinata condizione è vera, come il contatore A è inferiore a un valore massimo o il tempo di ping a un server è inferiore a una soglia o per sempre se si loopi mentre è vero o 1.

Il loop fino al ciclo while ma con la logica inversa. Invece di loop mentre una condizione è vera, stai assumendo che la condizione sia falsa e si loopi finché non diventa vera. Sono inversi l'uno dell'altro nell'espressione logica. Scegliere il ciclo corretto tra un po 'di tempo e fino a quando il loop consente al tuo programma di essere più leggibile e comprensibile dagli altri o da te stesso quando torni al codice qualche tempo dopo.

Alcuni esempi tipici o ragioni per utilizzare un loop non potrebbe essere, loop fino a quando l'utente non entra "uscita"; Loop fino a quando i dati generati sono maggiori del volume dei dati richiesto o fino a quando non vengono trovati un numero di file che corrispondono alla ricerca.

La sintassi di base di fino a fino a Loop sembra così:

fino a [condizione]; Fare
Righe di codice
Più righe di codice
Fatto

Ora prendiamo alcuni esempi. Il primo esempio farà più fattori di due fino a raggiungere una soglia di dimensioni di 1000:

#!/Bin/Bash
Num = 1
fino a ["$ num" -gt 1000]; Fare
Echo $ num
lascia num = num*2
Fatto

Il secondo esempio continuerà a eseguire il ping di un URL fino a quando il tempo di risposta è superiore a 100 millisecondi:

#!/Bin/Bash
Millisecondi = 0
# Ping finché non diventa più lento di 1000 millisecondi
fino a [$ millisecondi -GT 1000]
Fare
# esegui il ping ed estrai la linea che ha il tempo di ping, che termina nel tempo = xxxx ms
Output = 'ping -c 1 Google.com | tempo grep | awk -f = 'print $ nf' '
Echo "Time ping: $ output"
# estrarre numero di milliseocnds dalla stringa come intero
Milliseconds = 'echo $ output | awk 'stampa $ 1' | awk -f. 'stampa $ 1' '
Echo "Numero di ms = $ millisecondi"
Sonno 1
Fatto
Echo "Il tempo di ping ha superato 1000 millisecondi"

Il terzo esempio prenderà un file e combinerà il file con se stesso fino a quando non raggiungerà 1 kilobyte di dimensioni:

#!/Bin/Bash
FileName = 'Basename "$ 0"'
echo $ nome file
Tmp_file = "./tmp1 "
Target_file = "./bersaglio"
CAT $ fileName> $ target_file
Filesize = 0
# Aumenta la dimensione del file fino a 1 kb
Fino a [$ filesize -gt 1024]
Fare
# Aggiungi questo file al contenuto del file di destinazione
CP $ target_file $ tmp_file
Cat $ tmp_file >> $ target_file
Filesize = 'du $ target_file | awk 'stampa $ 1' '
echo "filesize: $ filesize"
Sonno 1
Fatto
Echo "New Filesize ha raggiunto il target di 1KB"

Il quarto esempio chiederà all'utente input del proprio nome fino a quando non digita l'uscita per lasciare il programma:

#!/Bin/Bash
Risposta = "foo"
# Aumenta la dimensione del file fino a 1 kb
fino a ["$ risposta" = "uscita"]
Fare
echo -n "Inserisci il tuo nome o" Esci "per lasciare questo programma:"
Leggi la risposta
Se ["$ risposta" != "uscita"]; Poi
Echo "Hello $ Response"
fi
Fatto
Echo "Grazie per aver giocato a questo gioco"

CONCLUSIONE

Il punto chiave è usare FINO A Loop per rendere il tuo codice più chiaro quando la condizione dovrebbe essere sempre falsa e quindi si desidera interrompere l'azione di loop quando la condizione diventa vera. In altre parole, continua a looping FINO A un punto nel tempo. Con questa prospettiva spero che i tuoi script bash possano essere più chiari e che tu abbia imparato qualcosa con questo articolo. Grazie.