GNU/Linux >> Linux Esercitazione >  >> Linux

Dichiarazioni di Bash If-Else:tutto ciò che devi sapere

Questo articolo copre i fondamenti dello scripting della shell Bash e descrive i costrutti logici più utilizzati, incluso il singolo if dichiarazione, se-altro dichiarazione e elif dichiarazione. Oltre a questo, tratteremo il modo corretto di confrontare stringhe e numeri. Migliora la tua esperienza con la shell Linux in 5 minuti!

Ogni volta che sei un amministratore di sistema esperto o un utente Linux principiante, vale la pena conoscere i fondamenti dello scripting della shell. Questa abilità ti dà la possibilità di automatizzare le attività ripetibili all'interno di uno o più server. Di solito, tali attività includono l'installazione del software e la configurazione di qualsiasi servizio di sistema.

Dichiarazione If

se istruzione funge da nucleo fondamentale per tutti i linguaggi di programmazione. Questa istruzione aiuta a implementare la logica decisionale all'interno del programma o di uno script. Ecco perché è importante capire come utilizzare i vari se dichiarazioni.

Ecco la sintassi di base:

if [ condition ]
then
  COMMANDS
fi

Dove:

  • condizione – è l'operatore logico di se dichiarazione.
  • COMANDI – comandi, che vengono eseguiti quando la condizione è true .
  • se, allora, fi – sono parole chiave sintattiche.

Ecco un elenco degli operatori delle condizioni di test più utilizzati:

Operatore Descrizione
! ESPRESSIONE L'ESPRESSIONE è falsa.
-n STRINGA La lunghezza di STRING è maggiore di zero.Text
-z STRINGA La lunghezza di STRING è zero (la STRING è vuota)
STRINGA1 =STRINGA2 STRING1 è uguale a STRING2
STRINGA1 !=STRINGA2 STRING1 non è uguale a STRING2
INTERO1 -eq INTEGER2 INTEGER1 è numericamente uguale a INTEGER2
INTEGER1 -gt INTEGER2 INTEGER1 è numericamente maggiore di INTEGER2
INTERO1 -lt INTEGER2 INTEGER1 è numericamente inferiore a INTEGER2
-e FILE FILE esiste
-d FILE FILE esiste ed è una directory
-s FILE FILE esiste e la sua dimensione è maggiore di zero (FILE non è vuoto.
-w FILE FILE esiste e l'autorizzazione di scrittura è concessa.
-x FILE FILE esiste e l'autorizzazione di esecuzione è concessa.
-r FILE FILE esiste e l'autorizzazione di lettura è concessa.

La cosa più interessante è che durante l'esecuzione dello script Bash tutto in [ ] viene superato il test utility, che restituisce truefalso . Quindi, se dimentichi la sintassi dell'operatore, usa la sua pagina man:

man test

Diamo un'occhiata al più semplice se esempio di istruzione:

#!/bin/bash
var=2
if [ $var -eq 2 ]
then
  echo "var equals 2"
fi

Uscita prevista:

var equals 2

Nell'esempio sopra, impostiamo la variabile var valore a 2 , quindi abbiamo verificato se la var valore è uguale a (-eq2 e stampato il messaggio.

Nella vita reale, di solito utilizziamo if istruzioni in combinazione con i costrutti di loop Bash (for-loops, while-loops, until-loops). Ecco un esempio di utilizzo di se dichiarazione con per -ciclo:

#!/bin/bash
for var in 1 2 3 4 5
do
  if [ $var -eq 3 ]
  then
    echo "Value 3 found"
    break
  fi
  echo var=$var
done

Uscita prevista:

var=1
var=2
Value 3 found

In questo esempio, stiamo esaminando l'elenco di numeri da 15 nella sezione per -loop e stampa il valore della variabile, che abbiamo appena elaborato. Quando viene trovato il valore 3, stiamo interrompendo l'esecuzione dello script.

Oltre agli esempi precedenti, puoi utilizzare il risultato di calcoli matematici in if dichiarazione:

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  fi
done

Nell'esempio sopra stiamo controllando i numeri pari nell'intervallo tra 110 .

Uscita prevista:

2 is even number
4 is even number
6 is even number
8 is even number
10 is even number

Ora puoi controllare l'output di un comando Bash o il risultato dell'esecuzione. Proviamo a verificare che l'utente esista in /etc/passwd file.

#!/bin/bash
user='root'
check_result=$( grep -ic "^$user" /etc/passwd )
if [ $check_result -eq 1 ]
then
  echo "$user user found"
fi

Nell'esempio sopra stiamo usando grep comando per cercare in /etc/passwd file:

grep -ic "^$user" /etc/passwd

Dove:

  • -i – ricerca senza distinzione tra maiuscole e minuscole.
  • -c – restituisce il numero di righe trovate (0 – niente trovato; 1 o più quando è stato trovato qualcosa).
  • "^$utente" – cerca la stringa che inizia (^ ) dal valore di $user variabile.

Tutto il resto nell'esempio dovrebbe essere chiaro.

Uscita prevista:

root user found

Quindi, controlliamo che /etc/passwd il file esiste:

#!/bin/bash
file='/etc/passwd'
if [ -s $file ]
then
  echo "$file file found"
fi

Uscita prevista:

File
/etc/passwd file found

Dichiarazione If-else

Dopo aver acquisito familiarità con il se di base dichiarazione, diamo un'occhiata a come utilizzare Bash if-else dichiarazione.

Ecco la sintassi generale:

if [ condition ]
then
  TRUE_COMMANDS
else
  FALSE_COMMANDS
fi

Dove:

  • condizione – è l'operatore logico di se dichiarazione.
  • VERI_COMANDI – comandi, che vengono eseguiti se la condizione è vera.
  • FALSI_COMANDI – comandi, che vengono eseguiti se la condizione è falsa.
  • se, allora, altrimenti, fi – sono parole chiave sintattiche.

Per dimostrare come funziona, cambiamo un esempio, in cui abbiamo rilevato numeri pari. Ora, stampiamo quale numero è pari e quale è dispari:

#!/bin/bash
for var in {1..10}
do
  if (( $var % 2 == 0 ))
  then
    echo "$var is even number"
  else
    echo "$var is odd number"
  fi
done

Ecco un output previsto:

1 is odd number
2 is even number
3 is odd number
4 is even number
5 is odd number
6 is even number
7 is odd number
8 is even number
9 is odd number
10 is even number

Dichiarazione Elif

Ora, cosa succede se dobbiamo controllare diverse condizioni durante l'esecuzione dello script? Ciò è possibile anche utilizzando l'istruzione elif, che è una scorciatoia di "else if ”.

Ecco come appare la sintassi:

if [ condition_1 ]
then
  CONDITION_1_COMMANDS
elif [ condition_2 ]
then
  CONDITION_2_COMMANDS
else
  ALL_OTHER_COMMANDS
fi

Dove:

  • condizione_1 – è la condizione logica da eseguire CONDITION_1_COMMANDS .
  • CONDITION_1_COMMANDS – comandi, che vengono eseguiti se la condizione_1 è vero .
  • CONDITION_2_COMMANDS – comandi, che vengono eseguiti se la condizione_2 è vero .
  • TUTTI I_ALTRI_COMANDI – comandi, che vengono eseguiti quando condizione_1condizione_2 sono falsi .
  • se, allora, elif, altrimenti, fi – sono parole chiave sintattiche.

Diamo un'occhiata al seguente esempio:

#/bin/bash

time=8
if [ $time -lt 10 ]
then
  echo "Good morning"
elif [ $time -lt 20 ]
then
  echo "Good day"
else
  echo "Good evening"
fi

In questo esempio impostiamo un orario variabile a 8 AM e ha stampato un messaggio in base al valore dell'ora.

Uscita prevista:

Good morning

Nidificazione delle dichiarazioni if

Ora, quando avremo acquisito familiarità con le basi, possiamo concludere questo argomento imparando come annidare le istruzioni if.

Ecco un esempio:

#/bin/bash

value=5
if [ $value -lt 10 ]
then
  if [ $value -eq 5 ]
  then
    echo "Value equals 5"
  else
    echo "Value not equals 5"
  fi
else
  echo "value is greater than 10"
fi

Ecco un output previsto:

Value equals 5

Operatori booleani

Potrebbe essere utile controllare diverse condizioni in un unico se dichiarazione. Puoi farlo utilizzando i seguenti operatori booleani:

  • && – AND logico.
  • || – OR logico.

Ecco un rapido esempio:

#!/bin/bash
username="andrei"
birthday="12/16"
today=$( date +"%m/%d")
if [ $USER = $username ] && [ $today = $birthday ]
then
  echo "Happy birthday\!"
fi

In questo semplice esempio stiamo verificando che due condizioni siano vere:

  • Il nome utente dell'utente che ha effettuato l'accesso deve essere uguale a andrei.
  • La data di oggi dovrebbe essere il 16 dicembre.

Se entrambe le condizioni sono vere, stiamo stampando "'Buon compleanno!"

Dichiarazione del caso

In alcune situazioni potrebbe essere necessario avere più di 3 istruzioni elif per controllare il tuo script. In questo caso, l'utilizzo di un'istruzione elif diventa complicato. Bash ti offre un modo migliore per gestire tali situazioni utilizzando un caso dichiarazione.

Ecco la sintassi:

case VARIABLE in
  VALUE_1)
    COMMANDS_FOR_VALUE_1
    ;;
  VALUE_2)
    COMMANDS_FOR_VALUE_2
    ;;
  *)
    DEFAULT_COMMANDS
    ;;
esac

Dove:

  • VARIABILE – la variabile il cui valore verrà confrontato con VALUE_1VALUE_2 .
  • COMANDI_FOR_VALUE_1 – comandi da eseguire quando VARIABILE il valore è uguale a VALUE_1 .
  • COMANDI_FOR_VALUE_2 – comandi da eseguire quando VARIABILE il valore è uguale a VALUE_2 .
  • COMANDI_DEFAULT – comandi da eseguire quando VARIABILE il valore non era uguale a una delle condizioni superiori.
  • casoinesac – parole chiave sintattiche.

Ecco lo schema molto comune per elaborare l'input nello script e avviare, interrompere o riavviare il servizio in base all'utente input:

#!/bin/bash

case $1 in
  start)
    echo "Starting the service"
    ;;
  stop)
    echo "Stopping the service"
    ;;
  restart)
    echo "Restarting the service"
    ;;
  *)
    echo "Unknown action"
    ;;
esac

In questo esempio stiamo controllando il valore dello speciale $1 Variabile Bash. Contiene il primo argomento, fornito a uno script. Ad esempio, se salvi l'esempio sopra in un file service.sh ed eseguilo in questo modo:

bash service.sh start

$ 1 conterrà la parola "inizio" come valore.

Il resto è gestito dalla logica dell'istruzione case.

Riepilogo

In questo articolo abbiamo trattato i fondamenti dello scripting della shell Bash e descritto i costrutti logici più utilizzati, incluso il singolo if dichiarazione, se-altro dichiarazione e elif dichiarazione.

Ci auguriamo che tu abbia trovato utile questo articolo. Se sì, per favore, per favore, aiutaci a diffonderlo nel mondo!


Linux
  1. Tutto quello che devi sapere su MySQL

  2. Tutto quello che devi sapere su MySQL

  3. Come utilizzare Linux Time Command:tutto ciò che devi sapere

  4. Che cos'è l'hosting VPS? Tutto quello che devi sapere sui server privati ​​virtuali

  5. Cosa devono sapere gli amministratori di sistema sull'utilizzo di Bash

Tutto ciò che devi sapere su Linux OpenSSH Server

Tutto ciò che devi sapere sul sistema operativo Linux Zorin

Tutto ciò che devi sapere sul sistema operativo Peppermint Linux

Tutto ciò che devi sapere su Linux Mint Distro

Tutto ciò che devi sapere sugli inode in Linux

Utili comandi Bash di cui potresti non essere a conoscenza