Bash 'if else': tutorial ed esempi

Utilizzo dell'istruzione if...else in Bash per l'esecuzione di codice condizionale.

Bash (Bourne Again Shell) è un prompt dei comandi della shell e un linguaggio di scripting nei sistemi operativi GNU/Linux. È la shell predefinita per la maggior parte delle distribuzioni Linux.

Le istruzioni condizionali sono vitali in qualsiasi linguaggio di programmazione, sia compilato che scriptato. Consentono all'utente di eseguire un pezzo di codice in base a una condizione predefinita, che è uno dei fondamenti della logica di programmazione. In questo articolo impareremo come usare il se altro dichiarazione condizionale in Bash.

introduzione

Il se altro L'istruzione in Bash consente all'utente di manipolare il flusso del codice in base alle condizioni. L'utente può specificare blocchi di codice separati da eseguire, solo uno dei quali verrà infine eseguito durante il runtime, in base alla condizione corrispondente soddisfatta.

Si noti che possono essere specificate più di due condizioni, per le quali elifa dichiarazione può essere utilizzata. L'utente può fornire un numero qualsiasi di condizioni utilizzando elifa, e infine una condizione predefinita usando altro bloccare. Vediamo di più su questo nella sintassi e negli esempi di seguito.

Sintassi generale

La sintassi generale per se altro l'affermazione in Bash è:

se poi  altro  fi

Qui, se il soddisfa, cioè, se restituisce 0 (successo), viene eseguito il blocco di codice 1. Se la condizione non restituisce 0, ovvero restituisce uno stato di errore, viene eseguito il blocco di codice 2. Il se altro il blocco termina con a fi dichiarazione.

Per più blocchi corrispondenti a più condizioni,elifa si usa:

se poi  elif allora  elif allora  ... ... altro  fi

Qui le condizioni vengono verificate nell'ordine e viene eseguito il blocco di codice della prima condizione che restituisce lo stato 0 (successo). Per esempio. Se restituisce uno stato diverso da zero (fallimento), quindi è controllato. Se restituisce lo stato 0, viene eseguito. Successivamente, non vengono verificate ulteriori condizioni e l'esecuzione del codice continua al codice dopo il fi dichiarazione.

Se nessuna delle condizioni restituisce lo stato 0, nel blocco else viene eseguito. Nota che il blocco else è facoltativo. Se nessuna condizione è soddisfatta, così come no altro blocco è specificato, non verrà eseguito alcun blocco di codice condizionale e l'esecuzione del codice continuerà fino al codice dopo il fi dichiarazione, come mostrato nel diagramma di flusso sottostante.

Nota che il poi l'istruzione deve essere utilizzata solo dopo Se e elifa dichiarazioni e non richiesto dopo il altro dichiarazione.

Esempi

Per eseguire un blocco di codice se una variabile ha un valore particolare:

x=0 if [ $x -eq 0 ] then echo "Il valore di X è 0" else echo "Il valore di X non è 0" fi

Per controllare più valori:

x=2 if [ $x -eq 0 ] then echo "Il valore di X è 0" elif [ $x -eq 1 ] then echo "Il valore di X è 1" elif [ $x -eq 2 ] then echo "Valore di X è 2" else echo "Il valore di X non è 0" fi

Le condizioni possono essere qualsiasi comando Linux. Il blocco di codice corrispondente verrà eseguito se il comando viene eseguito correttamente.

if npm -v allora echo "NPM presente nel sistema" altrimenti sudo apt install npm fi

Nell'esempio sopra, poiché npm non è stato installato nel sistema, il comando npm -v restituito uno stato diverso da zero. Quindi, l'esecuzione del codice è andata in altro block, dove installiamo npm usando adatto gestore di pacchetti. Come possiamo vedere, mi ha chiesto di inserire la password e ha iniziato l'installazione di npm.

Possiamo anche nidificare un altro se altro blocco all'interno di un Se, altro o elifa bloccare:

x=0 y=1 if [ $x -eq 0 ] then echo "X è 0" if [ $y -eq 1 ] then echo "Y è 1" else echo "Y non è 1" fi else echo "X è non 0" fi

Ciò è utile quando è necessario verificare un insieme separato di condizioni una volta soddisfatta una condizione iniziale.

Ad esempio, il codice seguente tenta di installare un software per server Web:

se nginx -v allora echo "NGINX è già installato." altrimenti se sudo apt install nginx allora echo "Installazione NGINX riuscita". elif sudo apt install apache2 then echo "Installazione di APACHE2 riuscita." else echo "Impossibile installare alcun software Web." fi

Il codice verifica prima se Nginx è già installato nel sistema. Se lo è, visualizza solo un messaggio ed esce. In caso contrario, tenta di installare Nginx.

Se per qualche motivo, Nginx non può essere installato nel sistema dal pacchetto, prova a installare Apache2. Se anche Apache2 dà errore durante l'installazione, esce visualizzando un messaggio che non è stato possibile installare alcun software.

In modo simile, un blocco annidato può essere utilizzato all'interno di un elifa blocco pure.

in esecuzione se altro: Script e riga di comando

Simile a qualsiasi codice Bash, il se altro L'istruzione può essere utilizzata nella shell Bash direttamente o da un file script eseguibile della shell. Una volta che l'interprete Bash trova un Se, altro o elifa istruzione, continua la shell per consentire all'utente di inserire il blocco di codice.

L'utente può anche salvare questo codice in un file di script ed eseguire il file di script.

Il #!/bin/bash all'inizio specifica l'interprete da utilizzare quando viene eseguito il file. Sebbene Bash sia la shell più comunemente usata al giorno d'oggi, alcuni utenti preferiscono shell come zsh, che dovrebbero essere specificate al posto di bash all'inizio di questo file.

Per dare i permessi di esecuzione per questo file, esegui:

chmod +x test.sh

Infine, per eseguire il file, esegui:

./test.sh

Conclusione

Simile a qualsiasi linguaggio di programmazione, se altro è una caratteristica fondamentale di Bash. Imparare il suo uso fa molto per scrivere script di base e avanzati.