Come utilizzare le istruzioni bash if -z e if -n per testare la stringa

Come utilizzare le istruzioni bash if -z e if -n per testare la stringa

L'istruzione "if" viene utilizzata in bash per ramificazione condizionale come in altri linguaggi di programmazione. L'istruzione "if" può essere utilizzata per verificare le diverse condizioni in bash. I diversi tipi di operatori di confronto, operatori logici e opzioni vengono utilizzati con l'istruzione "if" per il test. Gli usi dell'opzione "-z" e "-n" per testare i valori della stringa usando l'istruzione "if" in bash sono mostrati in questo tutorial.

Usando l'istruzione "if -z"

A volte, è necessario verificare se una variabile di stringa è vuota o se contiene una stringa di lunghezza zero. Ci sono molte opzioni in Bash per svolgere questo compito. L'uso dell'opzione "-z" con l'istruzione "if" è uno dei modi per verificare se una variabile è vuota o meno. Gli usi dell'opzione "if -z" sono mostrati nella parte successiva del tutorial.

Esempio 1: controllo dell'istruzione "if -z" usando "[]"

Crea un file bash con il seguente script in cui viene mostrato l'uso dell'istruzione "if -z" con "[]". Due input vengono prelevati dall'utente. Se uno qualsiasi dei valori di input è vuoto, viene stampato un messaggio di errore. Altrimenti, la somma dei due valori di input viene calcolata e stampata.

#!/Bin/Bash
#READ il primo numero
Leggi -p "Immettere il primo numero:" N1
#READ il secondo numero
Leggi -p "Immettere il secondo numero:" N2
#Check, qualsiasi input è vuoto o no
if [[-z "$ n1" || -Z "$ n2"]
Poi
#Print il messaggio di errore
echo "Il primo o il secondo numero è vuoto."
altro
#Calcula la somma
Sum = $ (($ N1+$ N2))
#Print il valore di somma
Echo "La somma di $ n1 e $ n2 è $ somma."
fi


Produzione:

Viene visualizzato il seguente output se lo script viene eseguito senza alcun argomento:


Viene visualizzato il seguente output se lo script viene eseguito con un argomento:


Viene visualizzato il seguente output se lo script viene eseguito con due argomenti:


Esempio 2: controllo dell'istruzione "if -z" con il comando "test"

Crea un file bash con il seguente script in cui l'uso dell'istruzione "if -z" con "test"Il comando viene mostrato. Un input viene preso dall'utente che deve essere numerico. Se il valore di input è vuoto, viene stampato un messaggio di errore. Se il valore di input non è vuoto ma non contiene un valore numerico, viene stampato un altro messaggio di errore. Se un numero intero viene preso come input, il valore di input viene stampato.

#!/Bin/Bash
#Leggi il valore di età
Leggi -p "Inserisci la tua età:" età
#Check se il valore di input è vuoto o meno
Se test -Z "$ age"
Poi
#Print il messaggio di errore per vuoto
echo "Il valore di input è vuoto."
Uscita
fi
#Check se il valore di input è un numero o meno
Se ! [[$ age = ~ ^[0-9]+$]]; Poi
#Print Il messaggio di errore per dati non numerici
eco "Il valore di età deve essere un numero."
altro
#Print il valore di input
echo "Hai $ Age Years."
fi


Produzione:

I seguenti apePar di output se lo script viene eseguito con il valore di input numerico:


Viene visualizzato il seguente output se lo script viene eseguito con il valore di input della stringa:

Usando l'istruzione "if -n"

A volte, è necessario verificare se una variabile di stringa non è vuota o se contiene un valore di stringa superiore a zero. Ci sono molte opzioni in Bash per svolgere questo compito. L'uso dell'opzione "-n" con l'istruzione "if" è uno dei modi per verificare se una variabile non è vuota o meno. Gli usi dell'opzione "if -n" sono mostrati nella parte successiva del tutorial.

Esempio 1: controllo dell'istruzione "if -n" usando "[]"

Crea un file bash con il seguente script in cui viene mostrato l'uso dell'istruzione "if -n" con "[]". Un valore di input viene tratto dall'utente. Se il valore di input è vuoto, viene stampato un messaggio di errore. Altrimenti, il valore dell'input viene stampato.

#!/Bin/Bash
#Leggi il nome del libro
Leggi -p "Inserisci il nome del libro:" libro
#Check Se l'ingresso è diverso da zero o no
Se ! [-n "$ book"]
Poi
#Print il messaggio di errore
echo "Il nome del libro non può essere vuoto."
altro
#Print il valore di input
echo "Il nome del libro è $ book."
fi


Produzione:

Viene visualizzato il seguente output se lo script viene eseguito con qualsiasi valore di input:


Viene visualizzato il seguente output se lo script viene eseguito con un valore di input stringa:


Esempio 2: controllo dell'istruzione "if -n" con il comando "test"

Crea un file bash con il seguente script in cui viene mostrato l'uso dell'istruzione "if -n" con il comando "test". Il primo input è una stringa e il secondo input è numerico. Se entrambi i valori di input non sono vuoti, viene stampato un messaggio di errore. Se il secondo valore di input non è numerico, altrimenti i valori di input vengono stampati.

#!/Bin/Bash
#Leggi il nome del libro
Leggi -p "Inserisci il nome del libro:" libro
#Leggi il nome del libro
Leggi -p "Inserisci il prezzo del libro:" Prezzo
#Check se l'input è diverso da zero o no
if test -n "$ book" && test -n "$ price"
Poi
#Check se il valore di input è un numero o meno
Se ! [[$ price = ~ ^[0-9]+$]]; Poi
#Print Il messaggio di errore per dati non numerici
eco "Il valore del prezzo deve essere un numero."
altro
#Print i valori di input
echo "Il nome del libro è $ book."
Echo "Il prezzo del libro è $ prezzo."
fi
altro
#Print il messaggio di errore
Echo "Il nome o il prezzo del libro non possono essere vuoti."
fi


Produzione:

Viene visualizzato il seguente output se lo script viene eseguito con due valori di input vuoti:


Viene visualizzato il seguente output se lo script viene eseguito con un valore di input vuoto:


Viene visualizzato il seguente output se lo script viene eseguito con due valori di input validi non vuoti:


Viene visualizzato il seguente output se lo script viene eseguito con due valori non vuoti e un valore di prezzo non valido:

Conclusione

Gli usi delle dichiarazioni "if -z" e "if -n" sono spiegati in questo tutorial usando più esempi per aiutare gli utenti bash ad applicare correttamente queste dichiarazioni nel loro script.