The Beginner's Guide to Shell Scripting 4 Condizioni e dichiarazioni If-Then
Nella nostra guida sugli script di shell abbiamo trattato abbastanza elementi di base che dovresti sentirti a tuo agio nello sperimentare. Nella puntata di questa settimana, affronteremo alcune delle cose più divertenti, come le condizioni e le dichiarazioni "if-then".
Quali sono le condizioni?
Nel linguaggio quotidiano, diciamo che le condizioni sono requisiti che devono essere soddisfatti affinché qualcosa avvenga. Perché il mio laptop sia in grado di connettersi a Internet, ci sono diverse condizioni che devono essere soddisfatte, come avere un ISP, il modem e / o il router acceso, il mio laptop acceso, ecc. È piuttosto semplice, e se c'è qualcuno di questi requisiti non sono soddisfatti, il risultato - il mio laptop che si collega a Internet - non accade.
Le condizioni nel campo dell'informatica funzionano allo stesso modo. Possiamo verificare se una stringa corrisponde ad un'altra stringa, se non corrisponde ad un'altra stringa, o anche se esiste. Allo stesso modo, possiamo testare argomenti numerici per vedere se uno è grande, minore o uguale ad un altro. Per fare in modo che qualcosa accada dopo che sono state soddisfatte le condizioni del test, utilizziamo le istruzioni "if-then". Il loro formato è piuttosto semplice.
se CONDIZIONE
poi
command1
comando2
...
commandn
fi
Se le dichiarazioni
Facciamo un piccolo script di prova veloce, dobbiamo farlo?
se test $ 1 -gt $ 2
poi
echo "$ 1 è maggiore di $ 2"
fi
Noterai che solo quando questa condizione è vera lo script eseguirà il seguente comando. Altrimenti, l'istruzione "if" verrà chiusa. Se ci sono dei comandi dopo l'istruzione "if", verranno eseguiti normalmente. Ho aggiunto la seguente riga alla fine del nostro script sopra per illustrare questo:
echo "Questo arriva dopo la dichiarazione if"
Ecco alcuni altri operatori numerici che potresti voler provare:
- -eq: uguale a
- -ne: non uguale a
- -lt: meno di
- -le: minore o uguale a
- -gt: maggiore di
- -ge: maggiore o uguale a
Test di stringhe
Ora, se modifichiamo la prima riga del nostro script in questo modo:
se test $ 1 = $ 2
allora la condizione metterà alla prova se i due sono uguali. C'è un fermo qui però !! L'uso di un segno di uguale (=) confronta due stringhe e non numeri. Se desideri confrontare i numeri, devi usare l'operatore "-eq" in modo simile a come abbiamo usato "-gt" sopra.
Ora, facciamo un'altra modifica:
se test $ 1! = $ 2
L'inclusione del punto esclamativo (!) Funge da modificatore "not". Cioè, esegue solo il seguente comando quando le due stringhe non corrispondono.
Ecco una lista di altri test basati su stringhe che puoi usare:
- stringa: l'uso di un solo argomento verifica se la stringa non è vuota (nulla) o non è definita in alcun modo
- -n stringa: verifica se la stringa non è vuota ed è definita
- -Stringa z: verifica se la stringa è vuota ed è definita in questo modo
Che altro dire se?
Devo ammettere che il titolo della sezione era decisamente un cattivo gioco di parole. Ok, sappiamo come eseguire un comando se un test è vero, ma cosa succede se vogliamo eseguire un comando diverso se è falso? Possiamo facilmente mettere insieme i due aggiungendo una sezione alle nostre dichiarazioni "if-then" - un "altro"!
se CONDIZIONE
poi
command1
comando2
...
commandn
altro
command1
comando2
...
commandn
fi
Mettiamo insieme un semplice script.
C'è tutto con la giusta indentazione. Se guardi da vicino, noterai che abbiamo usato parentesi quadre ([e]) invece del comando test. Sono funzionalmente equivalenti per i nostri scopi, e molto probabilmente vedrai le parentesi quadre per vari motivi, quindi li useremo da ora in poi.
Ecco come apparirà l'output:
È così facile!
Cosa faccio ora?
Ora che sai come utilizzare le istruzioni "if-then-else", puoi eseguire script che possono eseguire test. Ad esempio, puoi eseguire uno script che calcola un hash MD5 di un file e quindi confrontarlo con quello scaricato in un file per vedere se corrispondono.
Per alcuni punti bonus, puoi creare uno script che ha un ciclo "for", ma usa condizioni di test invece di leggere le righe da un file di elenco ...
Stiamo arrivando ad alcune delle parti più interessanti nella nostra Guida per principianti a Shell Scripting. Se hai perso le lezioni precedenti, ecco un breve elenco per il tuo check-out:
- Le basi di Shell Scripting
- Utilizzando For Loops
- Altri comandi di base
- Quali sono le differenze tra le shell di Linux?
- Come usare Basic Regular Expressions
Se hai creato o utilizzato script che utilizzano condizioni di test, istruzioni if-then-else e cicli "for", condividi con noi nei commenti!