GNU/Linux >> Linux Esercitazione >  >> Linux

Bash If Else Sintassi con esempi

Quando si lavora con Bash e script di shell, potrebbe essere necessario utilizzare le condizioni nel tuo script.

Nella programmazione, le condizioni sono cruciali:vengono utilizzate per affermare se alcune condizioni sono vere o no.

In questo tutorial, ci concentreremo su una delle istruzioni condizionali del linguaggio Bash:l'istruzione Bash if else.

Vedremo come puoi utilizzare questa istruzione per eseguire i tuoi script in modo condizionale.

Imparerai anche come utilizzare Bash se altro nidificato istruzioni per creare codice più complesso.

Bash If Else Statement

Per eseguire un'istruzione "if else" di Bash, devi utilizzare quattro parole chiave diverse:if, then, else e fi :

  • se :rappresenta la condizione che vuoi controllare;
  • allora :se la condizione precedente è vera, esegui un comando specifico;
  • altro :se la condizione precedente è falsa, esegui un altro comando;
  • Fi :chiude l'istruzione "if, then, else".

Quando utilizzi l'istruzione "se altro", dovrai racchiudere le condizioni tra parentesi quadre singole o doppie.

if [[ condition ]]
then
  <execute command>
else
  <execute another command>
fi

Tieni presente che l'istruzione "ELSE" è opzionale , se lo ometti, non verrà eseguito nulla se la condizione restituisce false.

Nota :devi separare la condizione dalle parentesi quadre con uno spazio, altrimenti potresti ricevere un errore di sintassi.

Se altri esempi

Ora che ne sai di più su Bash "se altro" dichiarazione, vediamo come puoi usarla in esempi del mondo reale.

In questa sezione creeremo uno script che stampa un messaggio se viene eseguito dall'utente root.

Se lo script non viene eseguito dall'utente root, scriverà un altro messaggio personalizzato.

Per verificare se lo script viene eseguito da root, dobbiamo vedere se l'UID del chiamante è zero.

#!/bin/bash

# If the user is root, its UID is zero.

if [ $UID  -eq  0 ]
then
  echo "You are root!"
else
  echo "You are not root."
fi

Come affermato in precedenza, il "altro ” la dichiarazione non è obbligatoria.

Se omettiamo nel nostro script creato in precedenza, saremmo comunque in grado di eseguire la prima istruzione "then".

#!/bin/bash

# If the user is root, its UID is zero.

if [ $UID  -eq  0 ]
then
  echo "You are root!"
fi

Ora, cosa succede se desideri aggiungere ulteriori istruzioni "se" ai tuoi script?

Dichiarazione Bash If Elif

Il "Se Elif L'istruzione " viene utilizzata in Bash per aggiungere ulteriori istruzioni "if" ai tuoi script.

Per eseguire un'istruzione "if elif" di Bash, devi utilizzare cinque parole chiave diverse:if, then, elif, else e fi :

  • se :rappresenta la condizione che vuoi controllare;
  • allora :se la condizione precedente è vera, esegui un comando specifico;
  • elisa :utilizzato per aggiungere una condizione aggiuntiva alla tua dichiarazione;
  • altro :se le condizioni precedenti sono false, esegui un altro comando;
  • Fi :chiude l'istruzione “if, elif, then”.
if [[ condition ]]
then
  <execute command>
elif [[ condition ]]
then
  <execute another command>
else
  <execute default command>
fi

Anche in questo caso, l'istruzione "ELSE" è facoltativa, quindi potresti volerla omettere se non hai bisogno di un'istruzione predefinita.

if [[ condition ]]
then
  <execute command>
elif [[ condition ]]
then
  <execute another command>
fi

Se Elif Esempi

Nella nostra sezione precedente, abbiamo utilizzato "se altro ” per verificare se un utente è root o meno.

In questa sezione verificheremo se l'utente è root o se ha un UID di 1002.

In caso contrario, usciremo dallo script e restituiremo il prompt all'utente.

if [[ $UID  -eq  0 ]]
then
  echo "You are root!"
elif [[ $UID  -eq 1002 ]]
then
  echo "You are user, welcome!"
else
  echo "You are not welcome here."
  exit 1;
fi

Congratulazioni, ora sai come usare "if elif ” dichiarazione!

E se volessi avere più condizioni nella stessa istruzione "if"?

Condizioni multiple in caso contrario

Per avere più condizioni scritte nella stessa istruzione "se altro", devi separare le tue condizioni con un operatore "AND" o un operatore "OR".

# AND operator used in if else.

if [[ <condition_1> && <condition_2> ]];
then
   <execute command>
fi

# OR operator used in if else.
if [[ <condition_1> || <condition_2> ]];
then
   <execute_command>
else
   <execute_another_command>
fi

Ad esempio, se vuoi scrivere uno script che controlli che sei l'utente root e che hai fornito il parametro corretto, dovresti scrivere:

#!/bin/bash
 
# If the user is root and the first parameter provided is 0.
if [[ $UID -eq 0 && $1 -eq 0 ]];
then
    echo "You provided the correct parameters"
else
    echo "Wrong parameters, try again"
fi

Incastrato If Else Statements

In alcuni casi, desideri implementare condizioni nidificate in modo che le condizioni vengano verificate in condizioni preliminari.

Per avere le istruzioni nidificate "se altro", devi semplicemente includere l'istruzione "se" in un'altra istruzione "se" e chiudere la tua istruzione nidificata prima di quella che la racchiude.

if [[ condition ]]
then  
  if [[ other condition ]]
  then
    <execute command>
  else
    <execute another command>
  fi
fi

Nota :assicurati di avere un'istruzione "fi" di chiusura per ogni istruzione "se" che apri. Un singolo "fi" semplicemente non è sufficiente per più istruzioni "se".

Esempi di istruzioni nidificate

Ad esempio, supponiamo di voler verificare che l'utente sia root prima di verificare che il primo argomento fornito sia zero.

Per risolverlo, dovresti scrivere un'istruzione "se, allora, altro" annidata nel modo seguente:

#!/bin/bash

if [[ $UID -eq 0 ]]
then  
  if [[ $1 -eq 0 ]]
  then
    echo "You are allowed to execute this script."
  else
    echo "You should have provided 0 as the first argument."
  fi
fi

Bash test

Come probabilmente avrai notato, nelle sezioni precedenti, abbiamo utilizzato l'operatore "-eq" per confrontare un valore variabile con un numero.

Abbiamo eseguito un semplice controllo di uguaglianza, ma cosa succede se si desidera avere un controllo di disuguaglianza?

E se volessi verificare, ad esempio, se un valore è maggiore di un determinato numero?

Per eseguire questa operazione, avrai bisogno di Bash test .

I bash test sono un insieme di operatori che puoi utilizzare nelle tue istruzioni condizionali per confrontare i valori tra loro.

I test Bash possono essere elencati eseguendo il comando "help test".

$ help test

Quando scrivi i test Bash, hai essenzialmente tre opzioni:

  • Scrivi le condizioni su file e directory :se esistono, se sono un file di caratteri, un file di dispositivo e così via;
  • Scrivi le condizioni sui numeri :se sono uguali tra loro, se uno è maggiore dell'altro;
  • Scrivi le condizioni sulle stringhe :se è impostata una variabile stringa o se due stringhe sono uguali tra loro.

Condizioni del file Bash

Condizioni del file Bash vengono utilizzati per verificare se un file esiste o meno, se può essere letto, modificato o eseguito.

I test dei file Bash sono descritti nella tabella seguente:

Operatore Descrizione
-e Verifica se il file esiste o meno
-d Verifica se il file è una directory
-b Verifica se il file è un dispositivo a blocchi
-c Verifica se il file è un dispositivo di caratteri
f1 -nt f2 Se il file f1 è più recente del file f2
f1 -ot f2 Se il file f1 è più vecchio del file f2
-r Il file può essere letto (permesso di lettura)
-w Il file può essere modificato (permesso di scrittura)
-x Il file può essere eseguito (autorizzazione di esecuzione)

Ad esempio, per verificare se un file è una directory, dovresti scrivere il seguente script

#!/bin/bash

# Checking the first argument provided
if [[ -d $1 ]]
then  
  echo "This is a directory"
else
  echo "Not a directory"
fi

Condizioni numero Bash

Le condizioni del numero Bash vengono utilizzate per confrontare due numeri:se sono uguali, se uno è maggiore di un altro o minore di un altro.

Ecco una tabella delle condizioni dei numeri Bash più utilizzate:

Operatore Descrizione
num1 -eq num2 Controlla se i numeri sono uguali
num1 -ne num2 Controlla se i numeri non sono uguali
num1 -lt num2 Verifica se num1 è inferiore a num2
num1 -le num2 Inferiore o uguale a num2
num1 -gt num2 Maggiore di num2
num1 -ge num2 Maggiore o uguale a num2

Ad esempio, per verificare se un numero non è uguale a zero, dovresti scrivere :

#!/bin/bash

# Checking the first argument provided
if [[ $1 -eq 0 ]]
then  
  echo "You provided zero as the first argument."
else
  echo "You should provide zero."
fi

Condizioni della stringa Bash

Le condizioni della stringa Bash vengono utilizzate per verificare se due stringhe sono uguali o se una stringa è vuota.

Ecco una tabella delle principali condizioni delle stringhe Bash:

Operatore Descrizione
str1 = str2 Verifica se le stringhe sono uguali o meno
str1 != str2 Verifica se le stringhe sono diverse
-z str1 Verifica se str1 è vuoto
-n str1 Verifica se str1 non è vuoto

Ad esempio, per verificare se un utente ha fornito un valore al tuo script, dovresti scrivere :

#!/bin/bash

# Checking the first argument provided
if [[ -n $1 ]]
then  
  echo "You provided a value"
else
  echo "You should provide something"
fi

Conclusione

Nel tutorial di oggi, hai appreso della istruzione Bash "If Else".

Hai visto, con esempi, che puoi costruire istruzioni più complesse:usando elif e istruzioni nidificate.

Infine, hai scoperto i test Bash, cosa sono e come vengono utilizzati per verificare le condizioni negli script.

Se sei interessato all'amministrazione del sistema Linux, abbiamo una sezione completa ad essa dedicata sul sito Web, quindi assicurati di dare un'occhiata!


Linux
  1. Matrici Bash con esempi

  2. Bash Istruzione If-Else con esempi

  3. 4 Esempi di istruzioni Awk If ( if, if else, if else if, :? )

  4. 4 Esempi di istruzioni Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  5. '&&' vs. '&' con il comando 'test' in Bash

Bash For Loop con esempi pratici

Comando Bash Echo spiegato con esempi in Linux

Reindirizzamento Bash spiegato con esempi

Bash Scripting:funzioni spiegate con esempi

Bash Scripting:variabili spiegate con esempi

Scripting Bash – Spiegazione del comando Printf con esempi