Test condizionali in bash: Se, poi, altro, elifa

Contenuti

Bash Shell

La programmazione in bash a volte può essere divertente. Sapere come separare i tuoi se dai tuoi altri-se o elif, come vengono chiamati in bash, può anche essere divertente. Scopri come ottenere i condizionali bash giusti.

Condizionali Bash: Se, poi, altro, elifa

Buono come tutti i linguaggi di programmazione, ci sono i condizionali – affermazioni condizionali che consentono di verificare una serie di situazioni. Nella maggior parte dei linguaggi di programmazione, un fondamento if La dichiarazione consentirebbe di testare lo stato o il valore di una determinata variabile di programmazione. Come esempio, potresti testare se una variabile è vuota o no.

Per maggiori informazioni sulle variabili bash, Potresti voler dare un'occhiata al nostro post Bash Functions and Local Variables.

Bash è una shell Linux a tutti gli effetti e un linguaggio di programmazione completo. Include anche molte estensioni alle istruzioni condizionali più comuni all'interno del suo linguaggio di programmazione. / scripting. Come esempio, si può verificare la presenza di file, per vedere se a grep -q la dichiarazione ha avuto successo e così via.

Allo stesso tempo, si possono specificare istruzioni condizionali complesse, e anche sottolivelli all'interno del if eccetera. istruzione condizionale corretta. Questo rende Bash molto adatto alla manipolazione / manipolazione dei big data, analisi del testo e molte altre attività simili a DevOps.

Questo post si concentrerà principalmente sull'ottenimento dei condizionali corretti, usando if...then, else, e elif dichiarazioni. Un post futuro discuterà condizioni di test più complesse, utilizzo di sottolivelli all'interno di istruzioni condizionali, eccetera.

Bash test condizionale: e … poi … essere

Scrivere una dichiarazione condizionale in Bash è facile e diretto. Puoi persino scriverli direttamente sulla riga di comando di Bash, senza usare uno script:

Se [ "1" == "1" ]; quindi eco 'vero'; essere

Semplice se esempio in bash

Il risultato è certo, Che cosa 1 partite 1. Nota che il modo per verificare l'uguaglianza tra gli elementi è usare == e no =. Questo è il caso in molte lingue e, spesso, è fatto per evitare o separare chiaramente dal "incarico" (In altre parole, determinare una variabile ad un dato valore).

Si noti inoltre che terminiamo ogni condizionale if affermazione con un finale fi (il contrario di e) dichiarazione. Questo ci consente di specificare più righe dopo di allora. then clausola prima di terminare il sezione successiva.

Bash test condizionale: il riposo e variabili

Mettiamo questo in un piccolo script, aggiungiamo a else e aggiungere alcuni controlli variabili.

Definire test.sh come segue:

#!/bin/bash

VAR1=1
VAR2=1

if [ "${VAR1 ·}" == "${VAR2 ·}" ]; then 
  echo 'true'
else 
  echo 'false'
fi

Successivamente, rendiamo eseguibile questo piccolo script emettendo chmod +x test.sh che imposta il flag eseguibile per l'oggetto test.sh testo.

Esempio di se nello script utilizzando variabili e una clausola else

All'interno dello script che abbiamo stabilito VAR1 e VAR2 al valore di 1. Prossimo, Viene emessa un'istruzione IF che confronta le due variabili, e noi facciamo eco true Se il confronto è valido, e false Se il confronto non è riuscito. Il risultato è un corretto true produzione.

Bash test condizionale: e Nesting e controllo avanzati

Possiamo espandere un po 'di più l'ultimo esempio e controllare la disuguaglianza usando != invece di ==, aggiungere loop nidificati e utilizzare contemporaneamente alcuni controlli delle variabili avanzate Bash nativi.

Definire test2.sh come segue:

#!/bin/bash

VAR1="${1}"
VAR2="${2}"

Se [ ! -Insieme a "${VAR1 ·}" -un ! -Insieme a "${VAR2 ·}" ]; then
  if [ "${VAR1 ·}" != "${VAR2 ·}" ]; then 
    echo 'true'
  else 
    echo 'false'
  fi
else
  echo "Affermare: O VAR1 (valore: '${VAR1 ·}'), o VAR2 (valore: '${VAR2 ·}'), o entrambi, sono vuoti!"
essere

In questo script, sostituiamo i nostri valori codificati di 1 per entrambi VAR1 e VAR2 con due variabili speciali: ${1} e ${2}, che rappresentano la prima e la seconda opzione / parametro, passato dalla riga di comando allo script. Rendiamo nuovamente eseguibile il nostro script e lo eseguiamo con varie combinazioni di alternative sbagliate.

Un'istruzione if di disuguaglianza più complessa che verifica anche le variabili di script

il -z il codice significa controlla se un parametro è vuoto o meno. Neghiamo il risultato (In altre parole, il sì si trasforma in no e lui non si trasforma in sì, o piuttosto / meglio, il vero diventa falso e il falso diventa vero) attraverso l'uso di un punto esclamativo (!) davanti -z dai un'occhiata. Successivamente usiamo anche a E clausola (In altre parole, entrambi i lati del E la clausola deve essere dimostrata vera).

In altre parole, il modo in cui potresti leggere il if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; la linea in linguaggio naturale è Sia VAR1 che VAR2 non devono essere vuoti. Possiamo vedere che le nostre variabili vengono controllate correttamente da questa dichiarazione condizionale, poiché ogni volta proviamo a passare solo una variabile, o due variabili dove una è vuota, il programma passa a else clausola che informa sull'uso scorretto della nostra opzione di script.

In conclusione, dentro il primo if dichiarazione condizionale, abbiamo un liceo (gergo informatico: nidificato) sentenza condizionale. Questa affermazione verifica la nostra disuguaglianza usando Non é la stessa cosa (!=). effettivamente, quando passiamo due valori diversi, vale a dire 1 e 2 per la sceneggiatura, il risultato è vero: questi numeri non sono uguali.

Bash test condizionale: elifa

Quando inizi a sviluppare affermazioni più complesse e profondamente nidificate in Bash, scoprirai presto che c'è un caso in cui ti stai diramando sempre più in profondità nel codice annidato, e il codice inizia a sembrare più complesso a causa dei molteplici livelli di profondità. Spesso, anche quando non sempre, È possibile utilizzare un elif dichiarazione in tali casi. Come esempio:

#!/bin/bash

if [ "${1}" -lt 2 ]; then
  echo "meno di 2"
else
  if [ "${1}" -lt 4 ]; then
    echo "meno di 4"
  else
    if [ "${1}" -lt 6 ]; then
      echo "meno di 6"
    fi
  fi
fi

if [ "${1}" -lt 2 ]; then
  echo "meno di 2"
elifa [ "${1}" -lt 4 ]; then
  echo "meno di 4"
elifa [ "${1}" -lt 6 ]; then
  echo "meno di 6"
essere

Aver definito questo script come test3.sh, lo rendiamo eseguibile e lo eseguiamo.

Esempio di dichiarazione condizionale elif con due implementazioni diverse

I due blocchi di codice fanno esattamente la stessa cosa: controllano se il valore è passato come prima opzione allo script (1, 3 e 5 rispettivamente) è meno di (-lt) I valori 2, 4 e 6 in sequenza. Vediamo che i due blocchi funzionano esattamente allo stesso modo.

Nonostante questo, il secondo blocco di codice, che impiega l'uso di elif dichiarazioni (che può essere letto anche come ma dichiarazioni) invece di più … e blocchi di istruzioni condizionali. Il secondo blocco di codice non è solo più corto, è anche più pulito, più chiaro e più piacevole alla vista. Nota che puoi anche combinare else e elif dichiarazioni in combinazione, modo annidato, eccetera.

conclusione

La scrittura del codice bash è, è stato e probabilmente sarà per un bel po' di tempo un piacevole esercizio per molti. La creazione di dichiarazioni condizionali ben congegnate è parte integrante e comune di questo.. In questo breve tutorial, noi analizziamo if, then, else, elif e fi dichiarazioni. Utilizzo delle varie dichiarazioni condizionali, sarai in grado di creare codice eccellente e pulito. Godere!

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.