Dichiarazione condizionale Bash

Dichiarazione condizionale Bash
L'affermazione condizionale viene utilizzata in qualsiasi linguaggio di programmazione per svolgere compiti decisionali. Questa affermazione è anche utilizzata in Bash per eseguire attività automatizzate come un altro linguaggio di programmazione, solo la sintassi è un po 'diversa in bash. In bash possono essere utilizzati due tipi di dichiarazioni condizionali. Queste sono dichiarazioni "se" e "caso". Le dichiarazioni "se" possono essere utilizzate per verificare le condizioni in più modi. Molte varianti di dichiarazioni "if" sono descritte in questo tutorial. L'istruzione "Case" viene utilizzata come alternativa all'istruzione "if". Ma alcune condizioni specifiche possono essere controllate solo usando l'istruzione "caso" e non supporta varie condizioni come l'istruzione 'if'. Quindi, qualsiasi attività eseguita dall'istruzione "Case" può essere eseguita facilmente mediante istruzione "se", ma l'istruzione "caso" non può essere utilizzata per tutti i tipi di attività eseguita dall'istruzione "if". Questo tutorial aiuterà i lettori ad apprendere gli usi delle dichiarazioni condizionali nello script bash usando vari esempi.

Tipi di dichiarazioni condizionali

I seguenti tipi di dichiarazioni condizionali possono essere utilizzati in bash.

  1. If Dichiarazione
  2. se altro
  3. Se Elif Dichiarazione
  4. Dichiarazione se nidificata
  5. Dichiarazione del caso

Ogni tipo di affermazione è spiegato in questo tutorial con un esempio.

Operatori condizionali

Molti operatori condizionali possono essere utilizzati nell'istruzione "if" per svolgere qualsiasi compito condizionale. Alcuni operatori condizionali per lo più usati sono menzionati di seguito.

Operatore Descrizione
-Eq Restituisce vero se due numeri sono equivalenti
-lt Restituisce vero se un numero è inferiore a un altro numero
-Gt Restituisce vero se un numero è maggiore di un altro numero
== Restituisce vero se due stringhe sono equivalenti
!= Restituisce vero se due stringhe non sono equivalenti
! Restituisce vero se l'espressione è falsa
-D Controlla l'esistenza di una directory
-e Controlla l'esistenza di un file
-R Controlla l'esistenza di un file e leggi l'autorizzazione
-w Controlla l'esistenza di un file e scrivi l'autorizzazione
-X Controlla l'esistenza di un file ed esegui l'autorizzazione

Uso di una semplice istruzione IF

Sintassi:

se [condizione]; Poi
(I)
fi

Esempio-1: istruzione if con la singola condizione

Questo esempio mostra l'uso singolo condizionale dell'istruzione IF. Crea un file chiamato 'cond1.sh 'e aggiungi il seguente script. Questo script prenderà un valore numerico come input e verificherà il valore inferiore a 100 o meno utilizzando se condizione. Se la condizione è vera, allora stamperà un messaggio nel terminale.

cond1.sh

#!/Bin/Bash
Echo "Inserisci un numero"
Leggi n
if [$ n -lt 100]; Poi
printf "$ n è inferiore a 100 \ n"
fi

Produzione:

Esegui lo script.

$ bash cond1.sh

Qui, 87 è preso come input che è inferiore a 100. Quindi, l'output è "87 è inferiore a 100". Nessun output è stampato per l'input maggiore di 100.

Esempio-2: istruzione if con più condizioni

Come è possibile applicare due condizioni con l'istruzione logica e in "if" è mostrata in questo esempio. Crea un file denominato 'cond2.sh'E aggiungi il seguente script. Qui, nome utente E parola d'ordine sarà preso dall'utente. Successivamente, l'istruzione "se" viene utilizzata per controllare il nome utente è 'Admin'E la password è'Superuser'. Se entrambi i valori corrispondono, allora l'istruzione "if" restituirà true e stampa il messaggio "Accedi correttamente".

cond2.sh

#!/Bin/Bash
Echo "Inserisci il nome utente"
Leggi un
Echo "Inserisci password"
Leggi PW
if [["$ un" == "amministratore" && "$ pw" == "superuser"]]; Poi
Echo "Accedi di successo."
fi

Produzione:

Esegui lo script.

$ bash cond2.sh

Lo script non verrà visualizzato alcun output per input non valido e stamperà il messaggio di successo per input valido.

Uso dell'istruzione IF-Else

Sintassi:

se [condizione]; Poi
(I)
altro
(I)
fi

Esempio-3: istruzione IF-Else con più condizioni

Per eseguire un'istruzione per la vera condizione e un'altra dichiarazione per la falsa condizione, se altro L'istruzione viene utilizzata in questo esempio. Crea un file denominato 'Cond3.sh' e aggiungi il seguente script. Qui, $ Nome La variabile viene utilizzata per prendere input dall'utente e il valore di $ Nome verrà confrontato con due valori, 'Neha' E 'Nil'. Se $ Nome corrisponde a uno di questi valori, quindi se la condizione restituirà vera e la dichiarazione di 'Se' la parte verrà eseguita. Se $ Nome non corrisponde a nessuno dei valori quindi se la condizione restituirà falsa e la dichiarazione di 'altro' la parte verrà eseguita.

cond3.sh

#!/Bin/Bash
Echo "Inserisci il tuo nome"
Leggi il nome
if [[$ name == "neha" || $ name == 'nil']]; Poi
Echo "Hai vinto il premio"
altro
echo "prova per la prossima volta"
fi

Produzione:

Esegui lo script.

$ bash cond3.sh

L'output è "Hai vinto il premio" per input valido e "prova per la prossima volta" per l'input non valido.

Uso dell'istruzione if-elif-else

Sintassi:

se [condizione]; Poi
(I)
elif [condizione]; Poi
(I)
..
altro
(I)
fi

Esempio-4: istruzione if-elif-else per verificare le diverse condizioni

Condizioni multiple con più istruzioni IF sono dichiarate in questo esempio per stampare il grado in base al marchio di input. Crea un file denominato 'Cond4.sh'E aggiungi il seguente script. Dopo aver preso il valore di $ Mark, La prima istruzione "if" testerà il valore è maggiore o uguale a 90. Se restituisce vero, stampa "Grado - A+", altrimenti andrà per la seconda condizione. Il secondo "se" testerà il valore è inferiore a 90 e maggiore o uguale a 80. Se restituisce vero, stampa "Grado - A" altrimenti andrà per la terza condizione. Se la terza condizione è vera, allora stamperà "Grado - B+", altrimenti andrà per la quarta condizione. Se la quarta condizione è vera, allora stampa "Grado - C+" e se restituisce falsa, verrà eseguita la dichiarazione di altro tipo che verrà eseguita, "Grado - F".

cond4.sh

#!/Bin/Bash
Echo "Inserisci il segno"
Leggi Mark
if (($ mark> = 90)); Poi
Echo "Grade - A+"
Elif (($ Mark < 90 && $mark >= 80)); Poi
Echo "Grade - A"
Elif (($ Mark < 80 && $mark >= 70)); Poi
Echo "Grade - B+"
Elif (($ Mark < 70 && $mark >= 60)); Poi
Echo "Grade - C+"
altro
Echo "Grade - F"
fi

Produzione:

Esegui lo script.

$ bash cond4.sh

Lo script è testato con i valori di tre marchi. Questi sono 95, 79 e 50. Secondo le condizioni utilizzate nello script, viene stampata la seguente uscita.

Uso del nidificato se

Sintassi:

se [condizione]; Poi
Comandi
se [condizione]; Poi
Comandi
fi
fi

Esempio-5: calcola il bonus in base all'importo delle vendite e alla durata

Questo esempio mostra l'uso dell'istruzione se nidificata che calcolerà il bonus in base all'importo delle vendite e alla durata del tempo. Crea un file chiamato 'cond5.sh 'e aggiungi il seguente codice. I valori di $ importo E $ durata sono presi come input. Successivamente, la prima dichiarazione "if" controllerà $ l'importo è maggiore o uguale a 10000 o meno. Se restituisce vero, controllerà la condizione di nidificato 'if'tatement. il valore di $ durata è controllato dall'istruzione interna "if". Se $ durata è inferiore o uguale a 7, quindi il messaggio "otterrai il 20% di bolo" verrà archiviato altrimenti il ​​messaggio "otterrai il 15% bonus" verrà archiviato nel $ output variabile. Se la prima condizione "if" restituisce false, verranno eseguite le dichiarazioni di altro. Nella seconda condizione nidificata "se", "otterrai il 10% di bonus" verrà stampato per restituire un valore reale e il messaggio "otterrai il 5% bonus" verrà stampata per restituire un valore falso.

cond5.sh

#!/Bin/Bash
Echo "inserisci l'importo delle vendite"
Leggi l'importo
Echo "Inserisci la durata del tempo"
Leggi la durata
if (($ importo> = 10000)); Poi
if (($ durata <= 7 )); then
output = "otterrai il bonus del 20%"
altro
output = "otterrai il 15% di bonus"
fi
altro
if (($ durata <= 10 )); then
output = "otterrai il 10% di bonus"
altro
output = "otterrai bonus del 5%"
fi
fi
Echo "$ output"

Produzione:

Esegui lo script.

$ bash cond5.sh

Lo script è testato da 12000 come importo e 5 come valore di durata prima. Secondo la condizione "se", il messaggio, "otterrai il bonus del 20% viene stampato. Successivamente, lo script viene testato da 9000 come importo e 12 come valori di durata e il messaggio "otterrai il bonus del 5%".

Uso della dichiarazione del caso

Sintassi:

caso in
pattern 1) comandi ;;
pattern n) comandi ;;
Esac

Esempio-6: dichiarazione "case" con un unico valore

L'istruzione "Case" può essere utilizzata come alternativa all'istruzione "if". Crea un file denominato 'cond6.sh' e aggiungi il seguente codice per eseguire alcune semplici operazioni aritmetiche. Questo script leggerà tre valori dalla riga di comando e memorizzerà nelle variabili, $ n1, $ n2 e $ op. Qui, $ N1 e $ N2 vengono utilizzati per archiviare due valori numerici e $ op viene utilizzato per archiviare qualsiasi operatore aritmetico o simbolo. L'istruzione "Case" viene utilizzata per verificare la presenza di quattro simboli per eseguire qualsiasi operazione aritmetica. Quando $ op è '+', aggiungerà $ n1 e $ n2 e memorizzerà il risultato in $ risultato. Allo stesso modo, '-' e '/' simboli vengono utilizzati per eseguire l'operazione di sottrazione e di divisione. Il simbolo "x" viene usato qui per eseguire l'operazione di moltiplicazione. Per qualsiasi altro valore di $ op, stamperà un messaggio, "numero sbagliato di argomenti".

cond6.sh

#!/Bin/Bash
N1 = $ 1
op = $ 2
N2 = $ 3
Caso $ op in
'+')
((Risultato = $ N1+$ N2)) ;;
'-')
((Risultato = $ N1- $ N2)) ;;
'X')
((Risultato = $ n1*$ n2)) ;;
'/')
((Risultato = $ N1/$ N2)) ;;
*)
Echo "Numeri sbagliati di argomenti"
uscita 0 ;;
Esac
echo "$ n1 $ op $ n2 = $ risultato"

Produzione:

Esegui lo script con tre argomenti della riga di comando. Lo script viene eseguito per quattro volte usando quattro operatori, '+', '-', 'X' e '/'.

$ bash cond6.Sh 40 + 20
$ bash cond6.Sh 40 - 20
$ bash cond6.Sh 40 x 20
$ bash cond6.SH 40 /20

Il seguente output apparirà dopo aver eseguito lo script.

Esempio-7: dichiarazione "case" con un intervallo di valori

L'istruzione "Case" non può definire più condizioni con l'operatore logico come "if". Ma usando il tubo ('|'), è possibile assegnare più condizioni nell'istruzione 'caso'. Questo esempio mostra il valore di grado in base a segni come Esempio-4 Ma usando l'affermazione "caso" invece di "if". $ Nome E $ mari valori k sono dati dagli argomenti della riga di comando. La prima condizione è definita da '9 [0-9] | 100"Per la stampa" Grado - A+". Ciò significa che se il valore di $ mark è entro 90-99 o 100, la condizione sarà vera. La seconda condizione è '8 [0-9]"Per la stampa di" Grado - A "e questo corrisponderà $ Mark con qualsiasi valore dall'intervallo, 80-89. La terza e la quarta condizione funzionano come la seconda condizione. La quinta condizione è '0 | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9]"per la stampa" grado - f "e corrisponderà $ Mark con 0 o qualsiasi numero nelle gamme 0-9, 10-19, 20-29, 30-39, 40-49 e 50-59.

cond7.sh

#!/Bin/Bash
# Stampa di grado in base al segno
nome = $ 1
Mark = $ 2
Caso $ Mark in
9 [0-9] | 100)
Grade = "A+" ;;
8 [0-9])
Grade = "A" ;;
7 [0-9])
Grade = "B+" ;;
6 [0-9])
Grade = "C+" ;;
0 | [0-9] | 1 [0-9] | 2 [0-9] | 3 [0-9] | 4 [0-9] | 5 [0-9])
Grade = "F" ;;
*)
eco "marchio non valido"
uscita 0 ;;
Esac
echo "$ nome ottenuto $ grade"

Produzione:

Esegui lo script con due argomenti della riga di comando. Lo script viene eseguito per quattro volte con valori di argomenti diversi.

$ bash cond7.Sh Lily 92
$ bash cond7.Sh Nahar 78
$ bash cond7.Sh John 500
$ bash cond7.Sh John Aa

Conclusione:

Utili multipli delle dichiarazioni delle condizioni vengono tentate di spiegare in questo tutorial utilizzando esempi appropriati. Speranza, il lettore sarà in grado di utilizzare le dichiarazioni condizionali in Bash Script in modo efficiente dopo aver praticato correttamente gli esempi di cui sopra.

Per ulteriori informazioni, guarda il video!