GNU/Linux >> Linux Esercitazione >  >> Linux

Scripting Linux:3 istruzioni per i cicli while in Bash

Lo scripting della shell, in particolare lo scripting Bash, è un ottimo modo per automatizzare attività ripetitive o noiose sui tuoi sistemi. Perché digitare quando puoi pianificare ed eseguire script a mani libere? Uno dei tanti costrutti di scripting è il ciclo. Un ciclo è una sezione di codice che raccoglie dati o genera dati, quindi esegue alcune operazioni sui dati e quindi ricomincia il processo finché non vengono soddisfatte alcune condizioni, lo script viene interrotto o quando i dati di input sono esauriti. Quando usi lo scripting Bash, a volte è utile eseguire azioni usando una qualche forma di loop.

[ Ai lettori è piaciuto anche: Cinque modi per utilizzare gli operatori di reindirizzamento in bash ]

I comandi di base del ciclo negli script Bash sono for e while .

  • for i loop vengono in genere utilizzati quando hai un elenco noto e finito, come una serie di numeri, un elenco di elementi o contatori.
  • while i loop possono essere usati con le liste ma sono utili anche per condizioni che non avere un limite noto. Puoi usarlo per eseguire comandi mentre una condizione è vera (oppure inverti la logica ed eseguila mentre la condizione è falsa).

Quindi, mentre (gioco di parole) ci sono diversi modi per eseguire i loop, in questo articolo mi concentro sugli esempi usando while loop.

1. Un semplice ciclo while

Immagina di installare un'applicazione enorme e sei preoccupato che alla fine possa utilizzare troppo spazio sul file system.

Invece di eseguire df in un terminale separato, puoi eseguire un semplice comando per monitorare l'utilizzo del disco ogni secondo. Ciò ti consente di interrompere il processo di installazione se vedi che raggiungerà quel limite.

while true
do
  df -k | grep home
  sleep 1
done

In questo caso, stai eseguendo il ciclo con un true condizione, il che significa che durerà per sempre o finché non premi CTRL-C. Pertanto, devi tenerlo d'occhio (altrimenti continuerà a utilizzare le risorse del sistema).

Nota :se utilizzi un ciclo come questo, devi includere un comando come sleep per dare al sistema un po' di tempo per respirare tra un'esecuzione e l'altra. L'esecuzione di qualsiasi cosa senza interruzioni potrebbe diventare un problema di prestazioni, soprattutto se i comandi all'interno del ciclo implicano operazioni di I/O.

2. In attesa che una condizione diventi vera

Ci sono variazioni di questo scenario. Ad esempio, sai che a un certo punto il processo creerà una directory e stai solo aspettando quel momento per eseguire altre convalide.

Puoi avere un while loop per continuare a controllare l'esistenza di quella directory e scrivere un messaggio solo mentre la directory non esiste.

Se vuoi fare qualcosa di più elaborato, puoi creare uno script e mostrare un'indicazione più chiara che la condizione del ciclo è diventata vera:

#!/bin/bash

while [ ! -d directory_expected ]
do
   echo "`date` - Still waiting" 
   sleep 1
done

echo "DIRECTORY IS THERE!!!"

3. Usare un ciclo while per manipolare un file

Un'altra utile applicazione di un while loop consiste nel combinarlo con read comando per accedere rapidamente a colonne (o campi) da un file di testo ed eseguire alcune azioni su di esse.

Nell'esempio seguente, stai semplicemente selezionando le colonne da un file di testo con un formato prevedibile e stampando i valori che desideri utilizzare per popolare un /etc/hosts file.

Qui il presupposto è che il file abbia colonne delimitate da spazi o tabulazioni e che non ci siano nessun spazi nel contenuto delle colonne. Ciò potrebbe spostare il contenuto dei campi e non darti ciò di cui avevi bisogno.

Nota che stai solo eseguendo una semplice operazione per estrarre e manipolare le informazioni e non sei preoccupato per la riutilizzabilità del comando. Lo classificherei come uno di quei "trucchi veloci e sporchi".

Ovviamente, se si trattava di qualcosa che faresti ripetutamente, dovresti eseguirlo da uno script, utilizzare nomi propri per le variabili e tutte quelle buone pratiche (inclusa la trasformazione del nome del file in un argomento e la definizione di dove inviare l'output, ma oggi l'argomento è while loop).

#!/bin/bash

cat servers.txt | grep -v CPU | while read servername cpu ram ip
do
   echo $ip $servername
done

[ Impara le basi dell'uso di Kubernetes in questo cheat sheet gratuito. ] 

Concludi

while i loop sono utili negli script che dipendono da una determinata condizione per essere vera o falsa, ma puoi anche usarli in modo interattivo per monitorare alcune condizioni.

Le cose importanti da ricordare sono:

Sii sempre chiaro su quale sia la condizione per terminare il cappio. Se è qualcosa che ti aspetti di fare da solo con un CTRL-C , quindi tieni d'occhio il tuo comando. Pensa a quanto velocemente vuoi che ogni ciclo di ciclo venga ripetuto. Se esegui operazioni che coinvolgono l'I/O all'interno del loop, questo diventa un aspetto critico della pianificazione.

Con questo in mente, divertiti while puoi.


Linux
  1. Esempi di Bash For Loop e While Loop

  2. 12 Esempi di Bash For Loop per gli script della tua shell Linux

  3. Esempi di Bash for loop

  4. Usando e in Bash mentre il ciclo

  5. Bash di Linux. ciclo for e funzione, per sommare numeri

Bash Scripting - Mentre e fino a ciclo spiegato con esempi

Bash Scripting – For Loop spiegato con esempi

Bash For Loops con esempi

Script di shell per principianti - Come scrivere script Bash in Linux

Bash Scripting Part2 – Cicli For e While con esempi

Il ciclo Bash FOR spiegato e semplificato