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
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.
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.
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.
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!