Esempio di bash If-Then-Else

Bash If Then Else Example



In questa lezione vedremo come possiamo usare le istruzioni If-Then-Else negli script dell'ambiente Bash che scriviamo. Le istruzioni If-Then-Else sono uno strumento utile per fornire un modo per definire il percorso di azione di uno script quando vengono soddisfatte alcune condizioni. Vediamo qual è la sintassi per le istruzioni If-Then-Else:

SeALCUNI-COMANDI;
poiALLORA-COMANDI;
altroELSE-COMANDI;
essere

Nel comando sopra mostrato, se ALCUNI-COMANDI è vero o il suo stato di ritorno è 0, allora verranno eseguiti i COMANDI. In caso contrario, vengono eseguiti ELSE-COMMANDS. In ALCUNI-COMANDI, di solito eseguiamo un confronto di stringhe o un confronto di valori sotto forma di numeri interi. Possiamo anche fare molte operazioni che coinvolgono i file. Diamo un'occhiata ad alcuni comandi primari di esempio che vengono utilizzati principalmente quando si lavora con condizioni basate su file:







Primario Significato
[ -a ] Restituisce vero quando esiste FILE.
[-B] Restituisce vero quando FILE esiste ed è un file speciale a blocchi.
[-C] Restituisce vero quando FILE esiste ed è un file di caratteri speciali.
[ -D ] Restituisce vero quando FILE esiste ed è una directory.
[ -e ] Restituisce vero quando esiste FILE.
[ -F ] Restituisce vero quando FILE esiste ed è un file normale.
[ -G ] Restituisce vero quando FILE esiste e il suo bit SGID è impostato.
[ -h ] Restituisce vero quando FILE esiste ed è un collegamento simbolico.
[-K] Restituisce vero quando FILE esiste e il suo bit permanente è impostato.
[ -P ] Restituisce vero quando FILE esiste ed è una named pipe (FIFO).
[ -R ] Restituisce vero quando FILE esiste ed è leggibile.
[ -S ] Restituisce vero quando FILE esiste e ha una dimensione maggiore di zero.
[ -T ] Restituisce vero quando il descrittore di file FD è aperto e fa riferimento a un terminale.
[-u] Restituisce vero quando FILE esiste e il suo bit SUID (imposta ID utente) è impostato.
[ -in ] Restituisce vero quando FILE esiste ed è scrivibile.
[-X] Restituisce vero quando FILE esiste ed è eseguibile.
[-O] Restituisce vero quando FILE esiste ed è di proprietà dell'ID utente effettivo.
[ -G ] Restituisce vero quando FILE esiste ed è di proprietà dell'ID gruppo effettivo.
[ -L ] Restituisce vero quando FILE esiste ed è un collegamento simbolico.
[ -N ] Restituisce vero quando FILE esiste ed è stato modificato dall'ultima lettura.
[ -S ] Restituisce vero quando FILE esiste ed è un socket.

THEN-COMMANDS e ELSE-COMMANDS possono essere qualsiasi operazione UNIX valida o qualsiasi programma eseguibile. Nota che il poi e essere i comandi sono separati da punto e virgola in quanto sono considerati elementi completamente separati di uno script.



Esempio semplice If-Then-Else

Iniziamo la nostra lezione con un esempio molto semplice con istruzioni If-Then-Else.
Ecco un programma di esempio:



Se esempio

Se esempio





Ecco l'output che vediamo quando eseguiamo il nostro script:

$. ifelse1.sh
I valori sono gli stessi!
$

Utilizzo degli argomenti della riga di comando

Possiamo anche utilizzare argomenti della riga di comando nei nostri script e utilizzare il numero di argomenti e i valori stessi come condizione nell'istruzione IF che definiamo. Definiamo prima un file di testo con il seguente contenuto:



Il mio nome è LinuxHint. Amo i server, specialmente quelli di Ubuntu. sono così
terminale!

Ora possiamo scrivere uno script che trovi se una parola è presente in un file di testo o meno. Definiamo ora lo script:

buttato fuori 'Trovare $ 1 in $ 2'
presa $ 1 $ 2
Se [ $? -Nato 0 ]
poi
buttato fuori '$1 ​​non trovato nel file $2.'
altro
buttato fuori '$1 ​​trovato nel file $2.'
essere
buttato fuori 'Script completato.'

Questo script è molto dinamico. Considera la parola da trovare e il file da cercare dalla stessa riga di comando. Ora siamo pronti per eseguire il nostro script:

. ifelse2.sh amore ciao.txt

Vedremo un output come:

Trovare l'amoreinciao.txt
amore trovatoin fileciao.txt.
Script completato.

Controllo del numero di argomenti della riga di comando

All'interno di un'istruzione IF, possiamo anche controllare quanti argomenti della riga di comando sono stati passati al comando in modo da poter agire sullo stesso:

contare=$ #
Se [ ! $conta -gt 1 ]
poi
buttato fuori 'Non ci sono abbastanza argomenti'
altro
buttato fuori 'Buon lavoro!'
essere

Eseguiamo questo script ora, vedremo il seguente output:

Argomenti della riga di comando

Argomenti della riga di comando

Dichiarazioni If-Then-Elif-Else

Possiamo anche avere più istruzioni IF nello stesso blocco per restringere il percorso decisionale che il nostro programma prende per eseguire i comandi che abbiamo definito. Ecco la sintassi per definire più istruzioni IF nei nostri script:

SeCOMANDI DI PROVA;
poi
RISULTATO-COMANDI;
elifa
ALTRO-COMANDI;
poi
UN ALTRO-RISULTATO-COMANDI;
altro
COMANDI-ALTERNATIVI;
essere

Questo sembra abbastanza familiare e anche facile da seguire. Definiamo un semplice esempio per stabilire come funziona l'albero:

contare=$ #
Se [ $conta -eq 1 ]
poi
buttato fuori 'Solo un argomento trovato.'
elifa [ $conta -eq 2 ]
poi
buttato fuori 'Meglio, due argomenti trovati.'
altro
buttato fuori 'Ottimo lavoro, molti argomenti trovati!'
essere

Ecco cosa otteniamo indietro con questo comando:

If Then Elif Else esempio

If Then Elif Else esempio

Utilizzo delle dichiarazioni dei casi

Le istruzioni IF-ELSE sono utili quando hai una lunga lista di opzioni su cui devi decidere. Ma nel caso in cui si desideri eseguire un'azione solo in pochi casi di corrispondenza esatta con il risultato, è possibile utilizzare anche le istruzioni CASE negli script Bash. La sua sintassi è simile a:

AstuccioESPRESSIONEinCASO 1)COMANDI DA ESEGUIRE;
CASO2)COMANDI DA ESEGUIRE;
CASO2)COMANDI DA ESEGUIRE;
...)COMANDI DA ESEGUIRE;
*)COMANDI DA ESEGUIRE;
esac

L'ultimo caso con * funge da caso predefinito e verrà eseguito quando nessuno dei casi sopra definiti corrisponde a.

Costruiamo rapidamente un semplice esempio utilizzando le istruzioni CASE:

Astuccio '$ 1' in
1)
buttato fuori 'Il valore è 1.'
;;
2)
buttato fuori 'Il valore è 2.'
;;
3)
buttato fuori 'Il valore è 3'.
;;
*)
buttato fuori 'Altro valore passato.'
esac

Ogni istruzione CASE è terminata da ;; (doppio punto e virgola). Ecco cosa otteniamo indietro con questo comando:

CASO esempio

CASO esempio

Conclusione

In questa lezione, abbiamo visto come possiamo usare le istruzioni IF-ELSE, IF-THEN-ELIF e CASE negli script Bash che definiamo per intraprendere azioni specifiche sulla base di valori che esistono nei nostri programmi o passati dall'utente usando il posizionale parametri.