Nello scripting bash, le istruzioni condizionali aiutano a verificare se una condizione specifica è vera o falsa. Quando la condizione è vera, lo script della shell esegue o esegue un blocco di codice stabilito dallo script. In caso contrario, lo script salta l'esecuzione del codice e passa all'istruzione condizionale successiva.
Nello scripting bash, le istruzioni condizionali includono if , se-altro , if-elif-else e nidificato se dichiarazioni. In questa guida esploreremo come queste istruzioni condizionali vengono utilizzate nell'esecuzione degli script.
L'istruzione if
Nella sua forma più semplice, l'istruzione "if" assume la seguente sintassi.
if [[ conditional_statement ]] then command fi
L'istruzione condizionale if inizia con if parola chiave. Questa è seguita da un'istruzione condizionale seguita da then parola chiave che precede il comando da eseguire se l'istruzione condizionale è vera.
Quindi, se la istruzione_condizione vale, quindi il comando viene eseguito. Se restituisce False, non accade nulla e il comando viene completamente ignorato e lo script si chiude.
Prendiamo un esempio di uno script bash che controlla se un punteggio fornito è maggiore di 80.
$ vim check_score.sh
Copia e incolla lo script.
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -gt 80 ]] then echo "You have passed the exam!" fi
Prendi nota del rientro. Assegna le autorizzazioni di esecuzione utilizzando chmod comando come segue:
$ chmod +x check_score.sh
Quindi esegui lo script.
$ ./check_score.sh
Se inserisci un valore maggiore di 80, l'istruzione condizionale è vera e il messaggio echo viene stampato sullo stdout
Tuttavia, se il valore fornito per il punteggio è inferiore a 80, la dichiarazione condizionale risulta falsa e non accade nulla. Lo script esce semplicemente.
L'istruzione if-else
Nello script della shell precedente, veniva eseguito un solo comando dopo l'istruzione condizionale valutata su True. Quando la condizione è stata valutata su False, non è stato stampato nulla e lo script è appena uscito. Il se-altro istruzione ci aiuta a eseguire un comando se una condizione risulta falsa. L'altro istruzione è quindi seguita da un comando o un'istruzione se la condizione restituisce False.
if [[ conditional_statement ]] then command else command fi
Modifichiamo lo script della shell precedente e aggiungiamo un altro dichiarazione
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -gt 80 ]] then echo "You have passed the exam!" else echo "You have failed the exam, please try again" fi
Qui, lo script della shell esegue il blocco di codice dopo else dichiarazione solo se la prima condizione risulta falsa, ovvero se il punteggio fornito è inferiore a 80.
In primo luogo, il punteggio fornito è 90 , che è maggiore di 80, e quindi la prima istruzione nello script viene eseguita e lo script viene chiuso.
Nel secondo caso, invece, viene fornito 70, e poiché il valore è minore di 80, lo script salta la prima istruzione poiché restituisce false e procede all'esecuzione della seconda istruzione dopo else dichiarazione.
La dichiarazione if-elif-else
Finora, abbiamo verificato una condizione che restituisce True o False. L'elif L'istruzione (else -if ) viene utilizzata quando sono presenti diverse istruzioni condizionali che hanno risultati diversi. Se una condizione restituisce False, procede a verificare se le altre condizioni sono vere. Ecco una semplice sintassi per l'istruzione if-elif-else.
if [[ conditional_statement_1 ]] then command_1 elif [[ conditional_statement_2 ]] then command_2 else command_3 fi
Considera lo script qui sotto
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -ge 90 ]] then echo "Excellent!" elif [[ $score -ge 70 ]] then echo "Congratulations! Job well done!" elif [[ $score -ge 50 ]] then echo "Fairly done. There's more room for improvement!" else echo "Poorly done" fi
In questo esempio, se il punteggio è maggiore o uguale a 90, viene stampato il messaggio Eccellente! Tuttavia, se il punteggio è inferiore a 90 ma maggiore o uguale a 70, viene stampato Congratulazioni! Lavoro ben fatto! .
Se il punteggio è inferiore a 70, ma maggiore o uguale a 50 stampa il messaggio Abbastanza fatto. C'è più margine di miglioramento!
E infine, se il punteggio è inferiore a 50, viene stampato Errore male.
Dichiarazione nidificata if
Un'istruzione if annidata comprende un'istruzione if all'interno di un'altra istruzione if. quando una condizione è vera, lo script procede alla verifica della condizione successiva. Nella dimostrazione seguente, prenderemo i valori di input di 3 valori numerici e verificheremo quale tra questi è il più grande.
#!/bin/bash read -p "Please enter the value of j:" j read -p "Please enter the value of k:" k read -p "Please enter the value of l:" l if [ $j -gt $k ] then if [ $j -gt $l ] then echo "j is greatest" else echo "l is greatest" fi else if [ $k -gt $l ] then echo "k is greatest" else echo "l is greatest" fi fi
Riepilogo
Questa era una panoramica di alto livello delle istruzioni condizionali negli script bash. Come hai visto, le istruzioni condizionali vengono utilizzate per determinare il risultato di uno script basato su espressioni condizionali impostate. Si spera che ora tu abbia una base di base per le affermazioni condizionali.