androide

Bash if..else statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Introduction to Bash Scripting 06 - A Simple "If" Statement

Sommario:

Anonim

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.

bash terminal