GNU/Linux >> Tutoriales Linux >  >> Linux

6 ejemplos de expresiones condicionales de Bash (-e, -eq, -z, !=, [, [[ ..)

La expresión bash es la combinación de operadores, características o valores utilizados para formar una declaración condicional bash. La expresión condicional podría ser una expresión binaria o unaria que involucre comandos numéricos, de cadena o cualquier comando cuyo estado de retorno sea cero cuando tenga éxito.


Hay varias expresiones condicionales que podrían usarse para probar con los archivos. Las siguientes son algunas expresiones condicionales que son útiles.

  • [ -e ruta del archivo ] Devuelve verdadero si el archivo existe.
  • [ -x ruta del archivo ] Devuelve verdadero si el archivo existe y es ejecutable.
  • [ -S ruta del archivo ] Devuelve verdadero si el archivo existe y es un archivo de socket.
  • [ expr1 -a expr2 ] Devuelve verdadero si ambas expresiones son verdaderas.
  • [ expr1 -o expr2 ] Devuelve verdadero si cualquiera de las expresiones 1 o 2 es verdadera.

Para obtener más expresiones condicionales para verificar los archivos, las cadenas y los valores numéricos, consulte la página de manual de bash.

Ejemplo 1 de Bash. Comprobar la existencia del archivo

El siguiente fragmento de código del script de shell Bash obtiene el nombre del archivo con su ruta absoluta, verifica si el archivo existe o no y arroja la información adecuada.

$ 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

Consulte nuestro artículo anterior para comprender los diversos tipos de declaraciones bash if.

Ejemplo 2 de Bash. Compara números

El siguiente script lee dos números enteros del usuario y verifica si ambos números son iguales, mayores o menores que el otro.

$ 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

Si es nuevo en bash scripting, consulte nuestro tutorial de introducción a Bash.

Ejemplo 3 de Bash. Calculadora aritmética básica

Este ejemplo lee entrada, que es un tipo de operación aritmética que se quiere realizar en variables bash (inp1 e inp2). La operación aritmética puede ser suma, resta o multiplicación..

$ 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

Saber cómo usar los parámetros especiales de bash ( $*, $@, $#, $$, $!, $?, $-, $_ ) facilitará su vida de creación de scripts.

Ejemplo 4 de Bash. Leer y hacer ping a la dirección IP

La siguiente secuencia de comandos se usa para leer la dirección IP y verificar si la dirección IP es accesible e imprime el mensaje apropiado.

$ 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

En este ejemplo, -z devuelve verdadero si ipaddress tiene una longitud de cero, cuando la condición está precedida por ! Operador (negativo), si expresión es falsa, entra en si parte y se ejecuta. Entonces, cuando la dirección IP no es nula, ingresa y verifica si la dirección IP es accesible.

Ejemplo 5 de Bash. Script de instalación

El script de instalación de la mayoría de los paquetes no permitirá ejecutarlos como usuario raíz. El script verifica al usuario que está ejecutando y arroja el error.

La siguiente secuencia de comandos le permite ejecutar la secuencia de comandos del instalador de Oracle solo si el usuario que está ejecutando no es 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

En este ejemplo, la salida del comando whoami se compara con la palabra "root". Para la comparación de cadenas ==, !=, < y se debe usar y para la comparación numérica se deben usar eq, ne, lt y gt.

Ejemplo 6 de Bash. Soportes mejorados

En todos los ejemplos anteriores, usamos solo corchetes simples para encerrar la expresión condicional, pero bash permite corchetes dobles que sirven como una versión mejorada de la sintaxis de un solo corchete.

$ 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"
  • [ es un sinónimo de comando de prueba. Incluso si está integrado en el shell, crea un nuevo proceso.
  • [[ es una nueva versión mejorada, que es una palabra clave, no un programa.
  • [[ es entendido por Korn y Bash.
  • En el ejemplo anterior, si la variable $str contiene la frase "condición" en cualquier lugar, la condición es verdadera.
  • Esta es la función de extensión de shell, que solo se admitirá cuando use [[ (corchetes dobles) y, por lo tanto, no es necesario citar muchos argumentos.

Linux
  1. Bash + Verificar nombre por expresión regular?

  2. Matrices bash con ejemplos

  3. Declaración de Bash If-Else con ejemplos

  4. Ejemplos de ciclos for y while de Bash

  5. 5 ejemplos de declaraciones de casos Bash

Bash For Loop con ejemplos prácticos

35 ejemplos de secuencias de comandos Bash

Comando Bash Echo explicado con ejemplos en Linux

Redirección de Bash explicada con ejemplos

Bash Scripting - Declaraciones condicionales

Sintaxis de Bash If Else con ejemplos