Introduction to Bash Scripting 06 - A Simple "If" Statement
Sommario:
if
Dichiarazione- Dichiarazione
if..else
- Dichiarazione
if..elif..else
- Annidato
if
Dichiarazioni - Condizioni multiple
- Operatori di test
- Conclusione
Il processo decisionale è uno dei concetti fondamentali della programmazione informatica. Come in qualsiasi altro linguaggio di programmazione,
if
,
if..else
,
if..elif..else
e nidificato
if
istruzioni in Bash possono essere utilizzate per eseguire il codice in base a una determinata condizione.
In questo tutorial, ti guideremo attraverso le basi delle istruzioni Bash
if
e ti mostreremo come usarle negli script della shell.
if
Dichiarazione
Bash
if
condizionali possono avere forme diverse. L'istruzione
if
più semplice ha la seguente forma:
if TEST-COMMAND then STATEMENTS fi
L'istruzione
if
inizia con la parola chiave
if
seguita dall'espressione condizionale e dalla parola chiave
then
. L'istruzione termina con la parola chiave
fi
.
Se il
TEST-COMMAND
restituisce
True
, lo
STATEMENTS
viene eseguito. Se
TEST-COMMAND
restituisce
False
, non accade nulla,
STATEMENTS
viene ignorato.
In generale, è buona norma inserire nuovamente il codice e separare i blocchi di codice con righe vuote. La maggior parte delle persone sceglie di utilizzare il rientro a 4 o 2 spazi. Rientri e righe vuote rendono il tuo codice più leggibile e organizzato.
Diamo un'occhiata al seguente script di esempio che controlla se un determinato numero è maggiore di 10.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
Salvare il codice in un file ed eseguirlo dalla riga di comando:
bash test.sh
Lo script ti chiederà di inserire un numero. Se ad esempio si immette 15, il comando
test
valuterà
true
perché 15 è maggiore di 10 e verrà eseguito il comando
echo
all'interno della clausola
then
.
The variable is greater than 10.
Dichiarazione
if..else
L'istruzione Bash
if..else
ha la forma seguente:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
Se il
TEST-COMMAND
restituisce
True
,
STATEMENTS1
verrà eseguito. Altrimenti, se
TEST-COMMAND
restituisce
False
,
STATEMENTS2
verrà eseguito. È possibile avere solo
else
clausola nell'istruzione.
Aggiungiamo una clausola
else
allo script di esempio precedente:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi
Dichiarazione
if..elif..else
L'istruzione Bash
if..elif..else
ha la forma seguente:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
Se il
TEST-COMMAND1
True
,
STATEMENTS1
verrà eseguito. Se
TEST-COMMAND2
True
,
STATEMENTS2
verrà eseguito. Se nessuno dei comandi di test viene valutato su
True
, viene eseguito
STATEMENTS2
.
È possibile avere una o più clausole
elif
. La clausola
else
è facoltativa.
Le condizioni sono valutate in sequenza. Quando una condizione restituisce
True
le condizioni rimanenti non vengono eseguite e il controllo del programma si sposta alla fine delle istruzioni
if
.
Aggiungiamo una clausola
elif
allo script precedente:
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi
Annidato
if
Dichiarazioni
Bash ti consente di annidare le istruzioni
if
all'interno delle istruzioni
if
. È possibile inserire più istruzioni
if
all'interno di un'altra istruzione
if
.
Il seguente script ti chiederà di inserire tre numeri e stamperà il numero più grande tra i tre numeri.
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi
Ecco come apparirà l'output:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
Invece di utilizzare le istruzioni
if
nidificate, in genere è più efficiente utilizzare l'istruzione case.
Condizioni multiple
Gli operatori logici
OR
e
AND
consentono di utilizzare più condizioni nelle istruzioni
if
.
Ecco un'altra versione dello script per stampare il numero più grande tra i tre numeri. In questa versione, anziché le istruzioni nidificate
if
, utilizzeremo l'operatore
AND
logico (
&&
).
#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi
Operatori di test
In Bash, il comando
test
utilizza una delle seguenti forme di sintassi:
test EXPRESSION]
Per annullare l'espressione di test, utilizzare l'operatore
NOT
(
!
) Logico. Quando si confrontano le stringhe, utilizzare sempre virgolette singole o doppie per evitare problemi di divisione delle parole o globbing.
Di seguito sono riportati alcuni degli operatori più comunemente usati:
-
-n
VAR
- Vero se la lunghezza di VAR è maggiore di zero.-z
VAR
- Vero se il VAR è vuoto.STRING1 = STRING2
- True [STRING1 e STRING2 sono uguali.STRING1 != STRING2
- True STRING1 e STRING2 non sono uguali.INTEGER1 -eq INTEGER2
- I veri INTEGER1 e INTEGER2 sono uguali.INTEGER1 -gt INTEGER2
- True INTEGER1 è maggiore di INTEGER2.INTEGER1 -lt INTEGER2
- True INTEGER1 è inferiore a INTEGER2.INTEGER1 -ge INTEGER2
- True INTEGER1 è uguale o maggiore di INTEGER2.INTEGER1 -le INTEGER2
- True INTEGER1 è uguale o inferiore a INTEGER2.-h
FILE
- Vero se il FILE esiste ed è un collegamento simbolico.-r
FILE
- Vero se il FILE esiste ed è leggibile.-w
FILE
- Vero se il FILE esiste ed è scrivibile.-x
FILE
- Vero se il FILE esiste ed è eseguibile.-d
FILE
- Vero se il FILE esiste ed è una directory.-e
FILE
- Vero se il FILE esiste ed è un file, indipendentemente dal tipo (nodo, directory, socket, ecc.).-f
FILE
- Vero se il FILE esiste ed è un file normale (non una directory o un dispositivo).
Conclusione
Le
if..else
if
,
if..else
e
if..elif..else
consentono di controllare il flusso dell'esecuzione dello script Bash valutando determinate condizioni.
Microsoft Research Asia assegna i gate a 10 anni Bash

Microsoft Research Asia è passata da una dozzina di persone nel 1998 a più di 350 un decennio dopo.
Come eseguire Bash su Ubuntu su Windows 10

L`abilitazione di Windows Subsystem per Linux consente di eseguire Bash su Ubuntu su Windows 10, script Bash , Strumenti da riga di comando di Linux, strumenti Linux-first.
Matrici di Bash

Le matrici sono una delle strutture di dati più utilizzate e fondamentali. In questo articolo, tratteremo gli array Bash e spiegheremo come usarli negli script Bash.