GNU/Linux >> Tutoriales Linux >  >> Linux

Declaración Bash if elif else:un tutorial completo

Introducción

Los scripts de Bash ayudan a automatizar tareas en su máquina. El if elif else La declaración en scripts bash permite crear casos condicionales y respuestas a resultados de código específicos. El if condicional ayuda a automatizar un proceso de toma de decisiones durante un programa.

Este artículo explica qué es if elif else declaración es y muestra la sintaxis a través de varios ejemplos.

Requisitos previos

  • Una máquina con sistema operativo Linux.
  • Acceso a la línea de comando/terminal.
  • Acceso a un editor de texto como Vi/Vim.

¿Qué es la instrucción Bash if?

En programación, el if declaración es una expresión condicional. Sin embargo, el comando probado en if declaración se evalúa en función del estado de salida . Por lo tanto:

  • Si el comando se completa con éxito , el estado de salida es 0 .
  • Si la declaración arroja un error , el estado de salida es cualquier número entre 1 y 255 .

El cero para el éxito y cualquier valor distinto de cero para el fracaso parece contradictorio. En la mayoría de los demás lenguajes de programación, cero representa falso y uno (o más) representa verdadero. Sin embargo, en las secuencias de comandos de bash, la convención de UNIX devuelve el estado de salida en lugar de un valor de verdad, y los dos no deben confundirse.

Pruebe un comando de error de muestra (1 mayor que 100) en la terminal ejecutando:

test 1 -gt 100

Verifique el estado de salida usando el comando echo:

echo $?

La prueba devuelve un código de salida 1 , indicando que la expresión falló.

De manera similar, verifique un comando de muestra que se evalúe correctamente (1000 mayor que 100) en la terminal con:

test 1000 -gt 100

Imprima el estado de salida para confirmar que el comando fue exitoso:

echo $?

La prueba devuelve un código de salida 0 , mostrando el comando completado sin error.

Ejemplo de instrucción Bash if

Siga las instrucciones a continuación para crear un script bash de ejemplo usando un if declaración.

1. Abra la terminal (CTRL +ALT +T ) y cree un script de ejemplo para probar cómo bash if la declaración funciona:

vi test_script.sh

2. En el script, agregue las siguientes líneas:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if test $VAR -gt 100
then
        echo "It's greater than 100"
fi
echo Bye!

Cada línea del script hace lo siguiente:

  • Líneas 1-3 proporcionar instrucciones para ingresar un número a través de la consola. El número se lee en una variable llamada VAR e impreso.
  • Línea 4 inicia el if y comprueba el estado de salida del comando inmediatamente después ($VAR -gt 100 ).
  • Líneas 5 y 6 señala el inicio de los comandos para ejecutar solo si la declaración en la línea 4 se completa con éxito (con un estado de salida 0), lo que significa que ingresamos un número mayor que 100.
  • Línea 7 señala el final del if declaración.
  • Línea 8 está fuera de la declaración y se ejecuta como se esperaba, independientemente del if resultado.

3. Guarde y cierre Vim:

:wq

4. A continuación, haga que el archivo sea ejecutable:

chmod +x test_script.sh

5. Por último, ejecute el script con:

./test_script.sh

El script genera un mensaje diferente basado en el número ingresado. Ejecute el script varias veces y pruebe otros números para confirmar el comportamiento.

Sintaxis de declaración Bash if

La sintaxis básica para bash if declaración es:

if <commands>
then
        <commands>
fi

Cada palabra clave tiene una función específica:

  • if señala el comienzo de la declaración. El comando justo después es aquel en el que se aplica la comprobación de estado de salida.
  • then ejecuta los comandos solo si la revisión anterior se completa con éxito.
  • fi cierra la sentencia if.

Encerrar el comando de prueba entre corchetes diferentes da como resultado diferentes métodos de ejecución para if declaración. La siguiente tabla proporciona una breve descripción, así como un caso de uso para cada tipo de paréntesis.

A continuación se muestran ejemplos de scripts de bash que usan cada tipo de paréntesis con una explicación más detallada.

Sintaxis de paréntesis simple

El uso de paréntesis simples en scripts de bash crea una subcapa. Cuando se combina con el if instrucción, el subproceso finaliza antes de continuar con el programa. El if analiza el estado de salida y actúa en consecuencia.

El bash if declaración con sintaxis de paréntesis simple se parece a lo siguiente:

if ( <commands> )
then
        <commands>
fi

Pruebe el siguiente ejemplo para ver cómo se comporta el subproceso junto con el if declaración:

1. Cree el script usando Vim:

vi single_parentheses.sh

2. Agregue las siguientes líneas de código al script:

outer_variable=Defined
echo Before if:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable
if (
        echo Inside subshell:
        inner_variable=Defined
        echo inner_variable = $inner_variable
        outer_variable=Changed
        echo outer_variable = $outer_variable
)
then
        echo After then:
        echo inner_variable = $iner_variable
        echo outer_variable = $outer_variable
fi
echo After fi:
echo inner_variable = $inner_variable
echo outer_variable = $outer_variable

El programa hace lo siguiente:

  • Línea 1 crea una variable llamada outer_variable en el que almacenamos una cadena Defined .
  • Líneas 2-4 Imprime las variables en la consola. En este momento, outer_variable tiene una cadena almacenada, mientras que inner_variable está en blanco.
  • Línea 5 inicia el if instrucción y un subproceso, delimitados por paréntesis simples.
  • Línea 6-11 almacenar una cadena dentro de inner_variable y cambia la outer_variable a una cadena diferente. Ambos valores se imprimen en la consola y el subproceso finaliza con un código de salida. En este caso, el subproceso finaliza con éxito con un código de salida 0 .
  • Líneas 12-16 ejecutar después del subproceso e imprimir los valores de las variables. Sin embargo, los valores vuelven a ser los que eran antes del if declaración. El subproceso solo almacena los valores localmente y no globalmente.
  • Líneas 16-19 ejecutar después de los comandos en then cláusula. Los valores permanecen sin cambios fuera de la declaración.

3. Guarde el script y cierre el editor:

:wq

4. Haga que el script sea ejecutable:

chmod +x single_parentheses.sh

5. Por último, ejecute el ejemplo para probar los resultados:

./single_parentheses.sh

La salida imprime los estados de las variables a medida que avanza el programa.

Sintaxis de doble paréntesis

La sintaxis de doble paréntesis para bash if declaración es:

if (( <commands> ))
then
        <commands>
fi

La construcción de doble paréntesis en bash permite:

  • Evaluación aritmética . Definiendo una variable como a=$(( 1+1 )) calcula la ecuación y establece a a 2.
  • Manipulación de variables al estilo C. Por ejemplo, incrementando variables con (( a++ )) .

Cuando se usa la sintaxis de doble paréntesis en un if declaración, la evaluación se comporta de manera diferente. Supongamos que la expresión se evalúa como 0 , entonces el if la prueba no pasa.

Pruebe el siguiente ejemplo para ver cómo funcionan los paréntesis dobles:

1. Cree un script bash en la terminal:

vi double_parentheses.sh

2. Agregue el siguiente código a double_parentheses.sh :

variable=-2
echo Before first if: $variable
if (( variable++ ))
then
        echo Incremented ++ style: $variable
fi
echo After first if: $variable
if (( variable=variable+1 ))
then
        echo Incremented arithmetically $variable
fi
echo After second if: $variable

Cada número de línea en el script hace lo siguiente:

  • Línea 1 define una variable y establece el valor en -2 .
  • Líneas 3-5 incrementa el valor estilo C dentro de paréntesis dobles y verifica el valor. Si la variable no es cero, el if imprime un mensaje en la consola.
  • Líneas 8-10 incrementa la variable en uno usando notación aritmética regular e imprime un mensaje si la variable no es cero.

3. Guarde el script y cierre Vim:

:wq

4. Cambie los permisos del script a ejecutable:

chmod +x double_parentheses.sh

5. Ejecute el script para ver los resultados:

./double_parentheses.sh

Sintaxis de paréntesis único

El corchete único es otro nombre para la test comando y una utilidad POSIX estándar disponible para todos los shells. La sintaxis básica es:

if [ <commands> ]
then
        <commands>
fi

El primer bash if ejemplo provisto en este tutorial (test_script.sh ) funciona igual de bien con la sintaxis alternativa:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
        echo "It's greater than 100"
fi
echo Bye!

Ejecute el script para confirmar que la salida sea equivalente. Para obtener la documentación completa y los detalles sobre el uso de la sintaxis de corchetes, ejecute el comando man en test utilidad:

man test

Sintaxis de doble paréntesis

La sintaxis de doble paréntesis en bash if scripts es la mejor opción si la portabilidad no es necesaria. Los brackets dobles son superiores a los brackets simples e incluyen muchas opciones avanzadas. La sintaxis es:

if [[ <commands> ]]
then
        <commands>
fi

Pruebe el siguiente ejemplo para ver cómo funciona la coincidencia de cadenas comodín en un if comando:

1. Cree un archivo de script de shell llamado double_brackets :

vi double_brackets.sh

2. Agrega el siguiente código:

if [[ $USER == k* ]]
then
        echo Hello $USER
fi
echo Bye!

3. El script verifica si la letra inicial del nombre de usuario es k y envía un mensaje de saludo si es así. Guarde y cierre el script:

:wq

4. Haga que el archivo sea ejecutable con chmod:

chmod +x double_brackets.sh

5. Ejecute el programa con:

./double_brackets.sh

Otros tipos de declaraciones condicionales de Bash

El if La declaración solo realiza una verificación condicional. Modificar el if con otros tipos de condicionales bash para crear evaluaciones complejas.

Declaración if else

El if else La declaración proporciona un método para definir diferentes acciones basadas en la salida del condicional verificado. La sintaxis básica es:

if <command>
then
	<commands>
else
	<commands>
fi

El siguiente ejemplo demuestra cómo if else obras condicionales:

1. Crea un nuevo script usando Vim:

vi if_else.sh

2. Inserte el siguiente código en el script:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
        echo "It's greater than 100"
else
        echo "It's less than 100"
fi
echo Bye!

La declaración verifica la salida del comando en línea 4 e imprime un mensaje descriptivo basado en el resultado:

  • Si el número ingresado es mayor que 100 , el programa entra en línea 6 e imprime el mensaje.
  • Si el número es menos de 100 , el mensaje en else cláusula (línea 8 ) imprime en la consola.

3. Guarde el script y cierre Vim:

:wq

4. Haga que el script sea ejecutable:

chmod +x if_else.sh

5. Por último, ejecute el script varias veces y pruebe varios valores:

./if_else.sh

Declaración if elif

El elif cláusula combinada con if else declaración crea múltiples comprobaciones condicionales. El if elif crea una serie de comprobaciones con diferentes resultados. La sintaxis es:

if <command>
then
        <commands>
elif <command>
then
        <commands>
else
        <commands>
fi

Para crear un script usando elif :

1. Cree un archivo shell llamado elif :

vi elif.sh

2. En el elif.sh archivo, agregue el siguiente código de ejemplo:

echo -n "Please enter a whole number: "
read VAR
echo Your number is $VAR
if [ $VAR -gt 100 ]
then
        echo "It's greater than 100"
elif [ $VAR -lt 100 ]
then
        echo "It's less than 100"
else
        echo "It's exactly 100"
fi
echo Bye!

El ejemplo agrega un elif comprobar en línea 7 para ver si el número ingresado es menor que 100. Si las declaraciones en las líneas 4 y 7 fallan, el programa salta a la cláusula else.

3. Guarde y cierre el archivo:

:wq

4. Haz el elif.sh archivo ejecutable:

chmod +x elif.sh

5. Ejecute el script varias veces y verifique el comportamiento de diferentes números:

./elif.sh

Agregar múltiples elif cláusulas para bifurcar la declaración para verificaciones más detalladas. Para instancias donde el if y elif la serie de patrones crece, la mejor opción es usar un case declaración.

Declaración if anidada

if las sentencias agregan una rama dentro del if . Específicamente, cuando un comando pasa la primera verificación if, pasa por una nueva verificación para filtrar aún más el resultado. La sintaxis es:

if <commands>
then
        if <commands>
        then
                <commands>
        fi
fi

El if anidado se usa comúnmente para buscar a través de matrices multidimensionales. Sin embargo, trate de evitar tener más de dos o tres if anidados declaraciones para reducir la complejidad del programa. Reconsidere la lógica del código cuando el if anidado sigue creciendo en profundidad.


Linux
  1. ¿Un tutorial de finalización de Easy Bash?

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

  3. 4 Ejemplos de sentencias If de Awk (if, if else, if else if, :? )

  4. 5 ejemplos de declaraciones de casos Bash

  5. ¿Hay una instrucción goto en bash?

Comando de salida de Bash y códigos de salida

Tutorial de secuencias de comandos de Bash para principiantes

Tutorial de Bash Heredoc para principiantes

Bash Scripting – Declaración de caso

Sintaxis de Bash If Else con ejemplos

Comprender Bash If Else y otras declaraciones condicionales

    Sintaxis Qué es Cuándo usar
    if ( <commands> ) Subcapa ejecutada en un subproceso. Cuando los comandos afectan el shell o entorno actual. Los cambios no permanecen cuando se completa la subcapa.
    if (( <commands> )) Extensión Bash. Usar para operaciones aritméticas y manipulación de variables de estilo C.
    if [ <commands> ] POSIX integrado, alias para test <commands> . Comparar números y probar si existe un archivo.
    if [[ <commands> ]] Extensión Bash, una versión avanzada de corchetes simples. Cadena que coincide con un patrón de comodines.