GNU/Linux >> Linux Esercitazione >  >> Linux

6 Esempi di espressioni condizionali Bash ( -e, -eq, -z, !=, [, [[ ..)

L'espressione Bash è la combinazione di operatori, funzionalità o valori utilizzati per formare un'istruzione condizionale bash. L'espressione condizionale può essere un'espressione binaria o unaria che coinvolge numerici, stringhe o qualsiasi comando il cui stato restituito è zero in caso di esito positivo.


Sono disponibili diverse espressioni condizionali che possono essere utilizzate per testare i file. Di seguito sono riportate alcune espressioni condizionali utili.

  • [ -e filepath ] Restituisce true se il file esiste.
  • [ -x filepath ] Restituisce true se il file esiste ed è eseguibile.
  • [ -S filepath ] Restituisce true se il file esiste ed è un file socket.
  • [ espr1 -a espr2 ] Restituisce true se entrambe le espressioni sono vere.
  • [ espr1 -o espr2 ] Restituisce vero se una delle espressioni1 o 2 è vera.

Per ulteriori espressioni condizionali per controllare i file, le stringhe ei numeri, fare riferimento alla pagina man di bash.

Esempio Bash 1. Verifica l'esistenza del file

Il seguente frammento di codice dello script della shell Bash ottiene il nome del file con il suo percorso assoluto e controlla se il file esiste o meno e genera le informazioni appropriate.

$ cat exist.sh
#! /bin/bash
file=$1
if [ -e $file ]
then
	echo -e "File $file exists"
else
	echo -e "File $file doesnt exists"
fi

$ ./exist.sh /usr/bin/boot.ini
File /usr/bin/boot.ini exists

Fare riferimento al nostro articolo precedente per comprendere i vari tipi di istruzione bash if.

Esempio Bash 2. Confronta i numeri

Lo script seguente legge due numeri interi dall'utente e controlla se entrambi i numeri sono uguali o maggiori o minori l'uno dell'altro.

$ cat numbers.sh
#!/bin/bash
echo "Please enter first number"
read first
echo "Please enter second number"
read second

if [ $first -eq 0 ] && [ $second -eq 0 ]
then
	echo "Num1 and Num2 are zero"
elif [ $first -eq $second ]
then
	echo "Both Values are equal"
elif [ $first -gt $second ]
then
	echo "$first is greater than $second"
else
	echo "$first is lesser than $second"
fi

$ ./numbers.sh
Please enter first number
1
Please enter second number
1
Both Values are equal

$ ./numbers.sh
Please enter first number
3
Please enter second number
12
3 is lesser than 12

Se non conosci bash scripting, fai riferimento al nostro tutorial introduttivo a Bash.

Esempio Bash 3. Calcolatrice aritmetica di base

Questo esempio legge l'input, che è un tipo di operazione aritmetica che si desidera eseguire sulle variabili bash (inp1 e inp2). L'operazione aritmetica può essere addizione, sottrazione o moltiplicazione..

$ cat calculator.sh
#!/bin/bash
inp1=12
inp2=11
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo -n "Please choose a word [1,2 or 3]? "
read oper

if [ $oper -eq 1 ]
then
	echo "Addition Result " $(($inp1 + $inp2))
else
	if [ $oper -eq 2 ]
	then
		echo "Subtraction Result " $(($inp1 - $inp2))
	else
		if [ $oper -eq 3 ]
		then
			echo "Multiplication Result " $(($inp1 * $inp2))
		else
			echo "Invalid input"
		fi
	fi
fi

$ ./calculator.sh
1. Addition
2. Subtraction
3. Multiplication
Please choose a word [1,2 or 3]? 4
Invalid input

Sapere come utilizzare i parametri speciali di bash ( $*, $@, $#, $$, $!, $?, $-, $_ ) renderà la tua vita di scripting facile.

Esempio Bash 4. Leggere e eseguire il ping dell'indirizzo IP

Il seguente script viene utilizzato per leggere l'indirizzo IP e verificare se l'indirizzo IP è raggiungibile e stampa il messaggio appropriato.

$ cat ipaddr.sh
#!/bin/bash
echo "Enter the Ipaddress"
read ip

if [ ! -z $ip ]
then
	ping -c 1 $ip
	if [ $? -eq 0 ] ; then
		echo "Machine is giving ping response"
	else
		echo "Machine is not pinging"
	fi
else
	echo "IP Address is empty"
fi

$ ./ipaddr.sh
Enter the Ipaddress
10.176.191.106

Pinging 10.176.191.106 with 32 bytes of data:

Reply from 10.176.191.106: bytes=32 time<1ms TTL=128

Ping statistics for 10.176.191.106:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Machine is giving ping response

In questo esempio, -z restituisce true se l'indirizzo IP è di lunghezza zero, Quando la condizione è preceduta da ! (negato), se expression è false, entra in if part ed esegue. Quindi, quando l'indirizzo IP non è nullo, entra e controlla se l'indirizzo IP è raggiungibile.

Esempio Bash 5. Script di installazione

Lo script di installazione della maggior parte dei pacchetti non consentirà di eseguirli come utente root. Lo script controlla l'utente che sta eseguendo e genera l'errore.

Lo script seguente consente di eseguire lo script di installazione di Oracle solo se l'utente che sta eseguendo non è root.

$ cat preinstaller.sh
#!/bin/bash
if [ `whoami` != 'root' ]; then
	echo "Executing the installer script"
	./home/oracle/databases/runInstaller.sh
else
	echo "Root is not allowed to execute the installer script"
fi

Executing the script as a root user,
# ./preinstaller.sh
Root is not allowed to execute the installer script

In questo esempio l'output del comando whoami viene confrontato con la parola “root”. Per il confronto di stringhe ==, !=, < e dovrebbe essere usato e per il confronto numerico dovrebbero essere usati eq, ne,lt e gt.

Esempio Bash 6. Parentesi migliorate

In tutti gli esempi precedenti, abbiamo utilizzato solo parentesi singole per racchiudere l'espressione condizionale, ma bash consente parentesi doppie che fungono da versione avanzata della sintassi a parentesi singola.

$ cat enhanced.sh
#!/bin/bash
echo "Enter the string"
read str
if [[ $str == *condition* ]]
then
	echo "String "$str has the word \"condition\"
fi

$ ./enhanced.sh
Enter the string
conditionalstatement
String conditionalstatement has the word "condition"
  • [ è sinonimo di comando di prova. Anche se è integrato nella shell, crea un nuovo processo.
  • [[ ne è una nuova versione migliorata, che è una parola chiave, non un programma.
  • [[ è inteso da Korn e Bash.
  • Nell'esempio sopra, se la variabile $str contiene la frase "condizione" in un punto qualsiasi, la condizione è vera.
  • Questa è la funzione di globbing della shell, che sarà supportata solo quando usi [[ (parentesi doppie) e quindi molti argomenti non devono essere citati.

Linux
  1. Matrici Bash con esempi

  2. Bash Istruzione If-Else con esempi

  3. Esempi di Bash For Loop e While Loop

  4. 5 Esempi di dichiarazioni di Bash Case

  5. Esempi di Bash for loop

Bash For Loop con esempi pratici

35 Esempi di script Bash

Comando Bash Echo spiegato con esempi in Linux

Reindirizzamento Bash spiegato con esempi

Bash Scripting – Dichiarazioni condizionali

Bash If Else Sintassi con esempi