Bash Scripting – Dichiarazione If

Bash Scripting – Dichiarazione If

Bash è un interprete per i linguaggi di comando. È un interprete di comandi predefinito sulla maggior parte dei sistemi GNU/ Sistemi Linux ed è ampiamente disponibile su vari sistemi operativi. Il nome è l'abbreviazione di Bourne-Again SHell . Lo scripting consente l'esecuzione di istruzioni che altrimenti verrebbero eseguite una per una in modo interattivo.

In questo articolo discuteremo dell'istruzione if nello scripting bash.

Bash If Istruzione

La sintassi di base di un'istruzione 'if' in Bash:

#!/bin/bash  if [ condition ]; then  # code to be executed if the condition is true fi 

Spiegazione:

  • if [ condition ]; then> : Questa riga inizia l'istruzione if, where condition> è l'espressione che viene valutata. Se la condizione è vera, il codice all'interno del file then> il blocco viene eseguito.
  • # code to be executed if the condition is true> : Questo è il blocco di codice che viene eseguito se la condizione specificata nell'istruzione if è vera.
  • fi> : Questo segna la fine dell'istruzione if.

Script Bash per determinare se un numero è pari

Quanto segue è un esempio sceneggiatura questo ti chiederà di inserire un numero e poi controllerà se il numero indicato è pari.

#!/usr/bin/bash
# Questo script richiede all'utente di inserire un numero, controlla se è pari e stampa un messaggio di conseguenza.
# Richiede all'utente di inserire un numero

echo -n Inserisci il numero:
leggi x

# Controlla se il numero inserito è pari
if [ $((x % 2)) == 0 ]; Poi
eco Il numero è pari
Essere

Spiegazione:

  1. #!/usr/bin/bash> : Questa è una riga shebang che specifica il percorso dell'interprete Bash. Indica che lo script deve essere eseguito utilizzando Bash.
  2. echo -n 'Enter Number: '> : Questa riga stampa il prompt Enter Number: senza un carattere di nuova riga ( -n> opzione). Attende che l'utente inserisca un numero.
  3. read x> : Legge l'input dell'utente e lo assegna alla variabile x> .
  4. if [ $((x % 2)) == 0 ]; then> : Questa riga controlla se il resto della divisione del numero inserito ( x> ) per 2 è uguale a 0. Se vero, significa che il numero è pari.
  5. echo 'Number is Even'> : Se la condizione nell'istruzione if è vera, questa riga stampa Number is Even sulla console.

Produzione:

Script Bash per determinare se un numero è pari

Script Bash per determinare se un numero è pari

Nota: Lo script non gestisce i casi in cui l'utente immette un valore non numerico. Se l'utente immette un valore non numerico, potrebbe produrre risultati imprevisti. Per risolvere questo problema potrebbe essere aggiunta un'ulteriore convalida dell'input.

Bash istruzione if-else

La sintassi di base di un'istruzione 'if-else' in Bash:

#!/bin/bash

se [condizione]; Poi

# codice da eseguire se la condizione è vera

altro

# codice da eseguire se la condizione è falsa

Essere

Spiegazione:

  • if [ condition ]; then> : Questa riga inizia l'istruzione if, where condition> è l'espressione che viene valutata. Se la condizione è vera, il codice all'interno del file then> il blocco viene eseguito.
  • # code to be executed if the condition is true> : Questo è il blocco di codice che viene eseguito se la condizione specificata nell'istruzione if è vera.
  • else> : Se la condizione nell'istruzione if è falsa, il codice all'interno di else> il blocco viene eseguito.
  • # code to be executed if the condition is false> : questo è il blocco di codice che viene eseguito se la condizione specificata nell'istruzione if è falsa.
  • fi> : Questo segna la fine dell'istruzione if-else.

Come trovare il numero maggiore utilizzando le istruzioni if-else in Bash Script?

Ecco lo script Bash per scoprire il numero maggiore utilizzando l'istruzione if-else in Bash Script.

#!/bin/bash
# Richiede all'utente di inserire un valore per x

echo -n Inserisci il valore di x:
leggi x

se [$x -gt 5]; Poi
echo x è maggiore di 5
altro
echo x non è maggiore di 5
Essere

Spiegazione:

  • #!/bin/bash : Questa riga è chiamata shebang e indica che lo script deve essere interpretato ed eseguito utilizzando la shell Bash.
  • # Richiede all'utente di inserire un valore per x : Questo è un commento che indica lo scopo della riga successiva.
  • echo -n Inserisci il valore di x: : Questa riga stampa il messaggio Immettere il valore di x: sul terminale senza passare alla riga successiva. L'utente inserirà il proprio valore sulla stessa riga.
  • leggi x : Questa riga legge l'input dell'utente e lo assegna alla variabile 'x'.
  • se [$x -gt 5]; Poi : Questa è un'istruzione if che controlla se il valore di 'x' è maggiore di 5.
    • $x : Rappresenta il valore della variabile 'x'.
    • -gt : sta per maggiore che nel contesto del confronto numerico.
    • 5 : il valore con cui viene confrontato.
  • echo x è maggiore di 5 : Se la condizione nella riga precedente è vera, questa riga verrà eseguita, stampando x è maggiore di 5 sul terminale.
  • altro : Se la condizione nell'istruzione if è falsa, lo script salta al blocco else.
  • echo x non è maggiore di 5 : Questa riga viene eseguita se il valore di 'x' non è maggiore di 5, stampando x non è maggiore di 5 sul terminale.
  • Essere : Ciò indica la fine del blocco if-else.

Produzione:

Trovare il numero maggiore utilizzando if-else

Trovare il numero maggiore utilizzando if-else

Bash istruzione if-elif-else

IL if-elif-else> L'istruzione in Bash viene utilizzata per la ramificazione condizionale. Consente di specificare più condizioni ed eseguire diversi blocchi di codice in base alla valutazione di queste condizioni.

La sintassi di base di un'istruzione `if-elif-else` in Bash:

#!/bin/bash

se [condizione1]; Poi
# Codice da eseguire se la condizione1 è vera
elif [condizione2]; Poi
# Codice da eseguire se la condizione2 è vera
elif [condizione3]; Poi
# Codice da eseguire se la condizione3 è vera
altro
# Codice da eseguire se nessuna delle condizioni è vera
Essere

Spiegazione:

  • se [condizione1]; Poi : Questo è il punto di partenza del if-elif-else> dichiarazione. Il codice all'interno di questo blocco verrà eseguito se condition1> è vero.
  • # Codice da eseguire se la condizione1 è vera : sostituisci questo commento con il codice effettivo che desideri eseguire if condition1> è vero.
  • elif [condizione2]; Poi : Se condition1> è falso, lo script verifica condition2> . Se condition2> è vero, viene eseguito il codice all'interno di questo blocco.
  • # Codice da eseguire se la condizione2 è vera : sostituisci questo commento con il codice effettivo che desideri eseguire if condition2> è vero.
  • elif [condizione3]; Poi : Se entrambi condition1> E condition2> sono false, lo script verifica condition3> . Se condition3> è vero, viene eseguito il codice all'interno di questo blocco.
  • # Codice da eseguire se la condizione3 è vera : sostituisci questo commento con il codice effettivo che desideri eseguire if condition3> è vero.
  • altro : Se nessuna delle condizioni precedenti (condizione1, condizione2, condizione3, ecc.) è vera, il codice all'interno else> il blocco viene eseguito.
  • # Codice da eseguire se nessuna delle condizioni è vera : sostituisci questo commento con il codice effettivo che desideri eseguire se nessuna delle condizioni è vera.
  • Essere : Questo segna la fine del if-elif-else> dichiarazione. La parola fi è se scritta al contrario e viene utilizzata per chiudere i blocchi condizionali in Bash.

Come scoprire se il numero è positivo, negativo o zero utilizzando l'istruzione 'if-elif-else' in Bash?

Aumentiamo il codice nell'esempio precedente per aggiungere la condizione per verificare lo zero.

#!/bin/bash

# Richiede all'utente di inserire un numero

echo -n Inserisci un numero:
leggi il num

if [$num -gt 0]; Poi
echo $num è un numero positivo.
elif [$num -lt 0]; Poi
echo $num è un numero negativo.
altro
echo $num è zero.
Essere

Spiegazione:

  • #!/bin/bash : Questa riga è uno shebang che indica che lo script deve essere interpretato ed eseguito utilizzando la shell Bash.
  • # Richiede all'utente di inserire un numero : Questo è un commento che indica lo scopo della riga successiva.
  • echo -n Inserisci un numero: : Questa riga stampa il messaggio Inserisci un numero: sul terminale senza passare alla riga successiva. L'utente inserirà il proprio numero sulla stessa riga.
  • leggi il num : Questa riga legge l'input dell'utente e lo assegna alla variabile 'num'.
  • if [$num -gt 0]; Poi : Questa è un'istruzione if che controlla se il valore di 'num' è maggiore di 0.
    • $num : Rappresenta il valore della variabile 'num'.
    • -gt : sta per maggiore che nel contesto del confronto numerico.
    • 0 : il valore con cui viene confrontato.
  • echo $num è un numero positivo. : Se la condizione nella riga precedente è vera, questa riga verrà eseguita, stampando $num è un numero positivo. al terminale.
  • elif [$num -lt 0]; Poi : Se la condizione nell'istruzione if è falsa, questa riga controlla se il valore di 'num' è inferiore a 0.
    • $num : Rappresenta il valore della variabile 'num'.
    • -lt : indica meno che nel contesto del confronto numerico.
    • 0 : il valore con cui viene confrontato.
  • echo $num è un numero negativo. : Se la condizione nell'istruzione elif è vera, questa riga verrà eseguita, stampando $num è un numero negativo. al terminale.
  • altro : Se entrambe le condizioni nelle istruzioni if ​​ed elif sono false, lo script salta al blocco else.
  • echo $num è zero. : Questa riga viene eseguita se il valore di 'num' non è maggiore di 0 e non inferiore a 0, stampando $num è zero. al terminale.
  • Essere : Ciò indica la fine del blocco if-elif-else.

Produzione:

se il numero è positivo, negativo o zero utilizzando

se il numero è positivo, negativo o zero utilizzando 'if-elif-else'.

Bash Nested if Istruzione

In Bash puoi usare nidificato if> istruzioni per creare strutture condizionali più complesse. Ecco la sintassi per un nidificato if> dichiarazione:

#!/bin/bash

se [condizione1]; Poi
# Codice da eseguire se la condizione1 è vera
se [condizione2]; Poi
# Codice da eseguire se la condizione2 è vera
altro
# Codice da eseguire se la condizione2 è falsa
Essere
altro
# Codice da eseguire se la condizione1 è falsa
Essere

Spiegazione:

  • se [condizione1]; Poi : Questo è l'esterno if> dichiarazione. Se condition1> è vero, viene eseguito il codice all'interno di questo blocco.
  • # Codice da eseguire se la condizione1 è vera : sostituisci questo commento con il codice effettivo che desideri eseguire if condition1> è vero.
  • se [condizione2]; Poi : All'interno del blocco dell'esterno if> dichiarazione, c'è un interno if> dichiarazione. Se condition2> è vero, viene eseguito il codice all'interno di questo blocco.
  • # Codice da eseguire se la condizione2 è vera : sostituisci questo commento con il codice effettivo che desideri eseguire if condition2> è vero.
  • altro : Se condition2> nell'interno if> l'affermazione è falsa, il codice all'interno di else> blocco dell'interno if> l'istruzione viene eseguita.
  • # Codice da eseguire se la condizione2 è falsa : sostituisci questo commento con il codice effettivo che desideri eseguire if condition2> è falso.
  • Essere : Questo segna la fine dell'interno if> dichiarazione.
  • altro : Se condition1> nell'esterno if> l'affermazione è falsa, il codice all'interno di else> blocco dell'esterno if> l'istruzione viene eseguita.
  • # Codice da eseguire se la condizione1 è falsa : sostituisci questo commento con il codice effettivo che desideri eseguire if condition1> è falso.
  • Essere : Questo segna la fine dell'esterno if> dichiarazione.

Come verificare l'idoneità all'età e i benefici per gli anziani in Bash utilizzando le istruzioni If nidificate?

Modifichiamo leggermente il codice sopra per utilizzare nidificato-if.

#!/bin/bash
# Richiedi all'utente di inserire un'età
echo -n Inserisci la tua età:
leggere l'età

if [$età -ge 18]; Poi
echo Hai diritto a votare.
if [$età -ge 65]; Poi
echo Hai diritto anche ai benefici per gli anziani.
altro
echo Non hai ancora diritto ai benefici per gli anziani.
Essere
altro
echo Non hai ancora diritto a votare.
Essere

Spiegazione:

  • #!/bin/bash : Questa riga è uno shebang che indica che lo script deve essere interpretato ed eseguito utilizzando la shell Bash.
  • # Richiedi all'utente di inserire un'età : Questo è un commento che indica lo scopo della riga successiva.
  • echo -n Inserisci la tua età: : Questa riga stampa il messaggio Enter your age: al terminale senza passare alla riga successiva. L'utente inserirà la propria età sulla stessa riga.
  • leggere l'età : questa riga legge l'input dell'utente e lo assegna alla variabile 'età'.
  • if [$età -ge 18]; Poi : Questa è un'istruzione if che controlla se il valore di 'età' è maggiore o uguale a 18.
    • $età : Rappresenta il valore della variabile 'età'.
    • -ge : sta per maggiore o uguale a nel contesto del confronto numerico.
    • 18 : il valore con cui viene confrontato.
  • echo Hai diritto a votare. : Se la condizione nella riga precedente è vera, questa riga verrà eseguita, stampando Hai diritto a votare. al terminale.
  • if [$età -ge 65]; Poi : All'interno del primo blocco if, questa è un'altra istruzione if che controlla se il valore di 'age' è maggiore o uguale a 65.
    • $età : Rappresenta il valore della variabile 'età'.
    • -ge : sta per maggiore o uguale a nel contesto del confronto numerico.
    • 65 : il valore con cui viene confrontato.
  • echo Hai diritto anche ai benefici per gli anziani. : Se la condizione nell'istruzione if interna è vera, questa riga verrà eseguita, stampando Hai anche diritto ai benefici per gli anziani. al terminale.
  • altro : Se la condizione nell'istruzione if interna è falsa, lo script salta al blocco else all'interno dell'istruzione if esterna.
    • echo Non hai ancora diritto ai benefici per gli anziani. : questa riga viene eseguita se il valore di 'età' non è maggiore o uguale a 65, stampando Non hai ancora diritto ai benefici per gli anziani. al terminale.
  • Essere : Ciò indica la fine del blocco if-else interno.
  • altro : Se la condizione nell'istruzione if esterna è falsa, lo script salta al blocco else.
    • echo Non hai ancora diritto a votare. : Questa riga viene eseguita se il valore di 'età' non è maggiore o uguale a 18, stampando Non sei ancora idoneo a votare. al terminale.
  • Essere : Ciò indica la fine del blocco if-else esterno.

Produzione:

nidificato se si utilizza Bash

nidificato se si utilizza Bash

Domande frequenti e alcune note sulle CONDIZIONI

Queste sono alcune cose da tenere a mente mentre scrivo le condizioni di test in bash.

1. Assicurarsi che ci siano spazi bianchi tra le parentesi e l'effettiva dichiarazione di controllo/confronto.

Ad esempio, quanto segue non funzionerà.

if [$x==0] 

Bash segnalerà un errore relativo a a mancante ] .

2. Termina sempre la riga prima di aggiungere una nuova parola chiave, ad esempio allora.

Se, quindi, else, elif e fi sono tutte parole chiave della shell, ciò significa che non possono essere utilizzate sulla stessa riga. Metti un ; tra l'istruzione precedente e la parola chiave oppure iniziare una nuova riga con la parola chiave.

3. Per utilizzare più condizioni in un'unica istruzione, utilizzare gli operatori logici.

Possiamo utilizzare gli operatori logici AND(&&) o OR(||) logici per utilizzare più condizioni.

Per esempio:

if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then  echo 'x is greatest' fi 

Qui, -ge è una scorciatoia per maggiore o uguale a

4. Come confrontare le stringhe in un'istruzione if di Bash?

Utilizzare il ` => `> operatore per l'uguaglianza delle stringhe e ` !=`> per la disuguaglianza.

Per esempio:

if [ '$string1' = '$string2' ]; then  # Code to execute if strings are equal else  # Code to execute if strings are not equal fi 

5. Posso usare le espressioni regolari nelle istruzioni if ​​di Bash?

Sì, puoi usare il ` [[ ... ]]`> costruire per una corrispondenza di stringhe più avanzata con le espressioni regolari.

Per esempio:

if [[ '$string' =~ ^[0-9]+$ ]]; then  # Code to execute if the string contains only numbers else  # Code to execute if the string does not contain only numbers fi 

6. Come verificare se un file esiste in uno script Bash utilizzando un'istruzione if?

Puoi usare il comando ` -e`> flag nella condizione, in questo modo:

if [ -e 'filename' ]; then  # Code to execute if the file exists else  # Code to execute if the file does not exist fi 

7. Qual è la sintassi per un'istruzione if-else nello scripting Bash?

La sintassi di base per an 'se-altro'. L'istruzione nello scripting Bash è:

if [ condition ]; then  # Code to execute if condition is true else  # Code to execute if condition is false fi 

8. Come posso utilizzare l'istruzione elif in uno script Bash?

Il ` elif`> viene utilizzata per verificare condizioni aggiuntive se l'iniziale if> la condizione è falsa.

Ecco un esempio:

if [ condition1 ]; then  # Code to execute if condition1 is true elif [ condition2 ]; then  # Code to execute if condition2 is true else  # Code to execute if none of the conditions are true fi 

9. Come posso utilizzare gli operatori logici (AND, OR) nelle istruzioni if ​​di Bash?

Puoi usare ` -a`> per AND logico e ` -o`> per l'OR logico.

Per esempio:

if [ condition1 -a condition2 ]; then  # Code to execute if both conditions are true fi 

Conclusione

In questo articolo abbiamo discusso dello scripting Bash che è come uno strumento estremamente utile per far sì che il tuo computer faccia le cose automaticamente. Questo articolo ci ha insegnato l'istruzione if in Bash, che è come un decisore negli script. Abbiamo imparato le nozioni di base, visto esempi come verificare se un numero è pari o capire se qualcuno può votare, e abbiamo anche esplorato cose più fantasiose come gestire molte condizioni o inserire istruzioni if ​​l'una dentro l'altra. L'articolo fornisce spiegazioni chiare, esempi e risponde a domande comuni per aiutarci a migliorare l'utilizzo degli script Bash. L'aspetto fondamentale è prestare attenzione a dettagli come la spaziatura e le regole speciali, in modo che i nostri script funzionino senza intoppi e semplifichino la gestione delle attività sul computer.