In questo argomento, capiremo come utilizzare se dichiarazioni negli script Bash per completare le nostre attività automatizzate.
Bash se le dichiarazioni sono utili. Sono utilizzati per eseguire attività condizionali nel flusso sequenziale di esecuzione delle istruzioni. Le istruzioni Se di solito ci consentono di prendere decisioni nei nostri script Bash. Ci aiutano a decidere se eseguire o meno un pezzo di codice in base alla condizione che possiamo impostare.
Istruzioni if di base
Un'istruzione if di base comanda che se una particolare condizione è vera, viene eseguito solo un determinato insieme di azioni. Se non è vero, non eseguire tali azioni. Se l'istruzione si basa sul seguente formato:
Sintassi
if [ expression ]; then statements fi
La dichiarazione tra Poi E Essere (Se all'indietro) verrà eseguito solo se l'espressione (tra parentesi quadre) è vera.
Nota:Osservare gli spazi utilizzati nella prima riga e il punto e virgola alla fine della prima riga; entrambi sono obbligatori da utilizzare.Se istruzione condizionalefinisce conEssere.
- Per utilizzare più condizioni con l'operatore AND:
if [ expression_1 ] && [ expression_2 ]; then statements fi
- Per utilizzare più condizioni con l'operatore OR:
if [ expression_1 ] || [ expression_2 ]; then statements fi
- Per le espressioni composte con operatori AND e OR, possiamo utilizzare la seguente sintassi:
if [ expression_1 && expression_2 || expression_3 ]; then statements fi
Di seguito sono riportati alcuni esempi che dimostrano l'utilizzo dell'istruzione if:
Esempio 1
In questo esempio, prendi un input dall'utente di qualsiasi numero e controlla se il valore è maggiore di 125.
#!/bin/bash read -p ' Enter number : ' number if [ $number -gt 125 ] then echo 'Value is greater than 125' fi
Produzione
Se inseriamo il numero 159, l'output sarà simile a:
Esempio 2
In questo esempio, dimostriamo l'utilizzo di se dichiarazione con un semplice scenario di confronto di due stringhe:
#!/bin/bash # if condition is true if [ 'myfile' == 'myfile' ]; then echo 'true condition' fi # if condition is false if [ 'myfile' == 'yourfile' ]; then echo 'false condition' fi
Produzione
Esempio 3
In questo esempio, dimostriamo come confrontare i numeri utilizzando l'istruzione if:
#!/bin/bash #if condition (greater than) is true if [ 10 -gt 3 ]; then echo '10 is greater than 3.' fi #if condition (greater than) is false if [ 3 -gt 10 ]; then echo '3 is not greater than 10.' fi #if condition (lesser than) is true if [ 3 -lt 10 ]; then echo '3 is less than 10.' fi #if condition (lesser than) is false if [ 10 -lt 3 ]; then echo '10 is not less than 3.' fi #if condition (equal to) is true if [ 10 -eq 10 ]; then echo '10 is equal to 10.' fi #if condition (equal to) is false if [ 10 -eq 9 ]; then echo '10 is not equal to 9' fi
Produzione
Esempio 4
In questo esempio, definiremo come utilizzare l'operatore AND per includere più condizioni nell'espressione if:
#!/bin/bash # TRUE && TRUE if [ 8 -gt 6 ] && [ 10 -eq 10 ]; then echo 'Conditions are true' fi # TRUE && FALSE if [ 'mylife' == 'mylife' ] && [ 3 -gt 10 ]; then echo 'Conditions are false' fi
Produzione
Esempio 5
In questo esempio, definiremo come utilizzare l'operatore OR per includere più condizioni nell'espressione if:
#!/bin/bash # TRUE || FALSE if [ 8 -gt 7 ] || [ 10 -eq 3 ]; then echo ' Condition is true. ' fi # FALSE || FALSE if [ 'mylife' == 'yourlife' ] || [ 3 -gt 10 ]; then echo ' Condition is false. ' fi
Produzione
Esempio 6
In questo esempio, definiremo come utilizzare AND e OR per includere più condizioni nell'espressione if:
#!/bin/bash # TRUE && FALSE || FALSE || TRUE if [[ 10 -eq 10 && 5 -gt 4 || 3 -eq 4 || 3 -lt 6 ]]; then echo 'Condition is true.' fi # TRUE && FALSE || FALSE if [[ 8 -eq 8 && 8 -gt 10 || 9 -lt 5 ]]; then echo 'Condition is false' fi
Produzione
Opzioni per l'istruzione If in Bash Scripting
L'istruzione Se contiene molte opzioni per eseguire un'attività specifica. Queste opzioni possono essere utilizzate per operazioni su file, operazioni su stringhe, ecc. Di seguito sono riportate alcune opzioni maggiormente utilizzate:
Opzioni (Operatori) | Descrizione |
---|---|
! ESPRESSIONE | Per verificare se EXPRESSION è falso. |
-n STRINGA | Per verificare se la lunghezza di STRING è maggiore di zero. |
-z STRINGA | Per verificare se la lunghezza di STRING è zero (ovvero è vuota) |
STRINGA1 == STRINGA2 | Per verificare se STRINGA1 è uguale a STRINGA2. |
STRINGA1 != STRINGA2 | Per verificare se STRINGA1 non è uguale a STRINGA2. |
INTERO1 -eq INTERO2 | Per verificare se INTEGER1 è numericamente uguale a INTEGER2. |
INTERO1 -gt INTERO2 | Per verificare se INTEGER1 è numericamente maggiore di INTEGER2. |
INTERO1 -lt INTERO2 | Per verificare se INTEGER1 è numericamente inferiore a INTEGER2. |
-d FILE | Per verificare se FILE esiste ed è una directory. |
-e FILE | Per verificare se FILE esiste. |
-rFILE | Per verificare se FILE esiste e viene concessa l'autorizzazione di lettura. |
-sFILE | Per verificare se FILE esiste e la sua dimensione è maggiore di zero (il che significa che non è vuoto). |
-wFILE | Per verificare se FILE esiste e l'autorizzazione di scrittura è concessa. |
xFILE | Per verificare se FILE esiste e viene concessa l'autorizzazione di esecuzione. |
Nidificato se
Puoi applicare tutte le 'istruzioni if' richieste all'interno del tuo script bash. È anche possibile utilizzare un'istruzione if all'interno di un'altra 'istruzione if'. È noto come istruzione Nested If.
Esempio
In questo esempio, troveremo 'se un dato numero è maggiore di 50 e se è un numero pari' utilizzando l'espressione if nidificata.
#!/bin/bash #Nested if statement if [ $1 -gt 50 ] then echo 'Number is greater than 50.' if (( $1 % 2 == 0 )) then echo 'and it is an even number.' fi fi
Produzione
Se inseriamo un valore di argomento pari a 100, l'output sarà simile a:
Conclusione
In questo argomento abbiamo discusso di come utilizzare la ramificazione condizionale nel flusso sequenziale di esecuzione delle istruzioni con l'istruzione bash if.