Comprobar si existe un argumento de entrada en Bash

Olorunfemi Akinlua 20 junio 2023
  1. Utilice $# para comprobar si existe un argumento de entrada en Bash
  2. Use $1 para verificar si existe un argumento de entrada en Bash
Comprobar si existe un argumento de entrada en Bash

Cuando creamos scripts Bash, es posible que deseemos tomar argumentos para usar dentro de nuestros scripts para ejecutarlos con éxito. Por lo tanto, necesitamos crear una secuencia de comandos para verificar la cantidad de argumentos de entrada que un usuario usa con la secuencia de comandos.

Todo esto evita comportamientos inesperados cuando un usuario no pasa los argumentos requeridos al usar el script o el comando, y luego podemos pasar un mensaje de error que le dice al usuario que no ha usado la cantidad requerida de argumentos.

Este artículo le mostrará cómo verificar si existe un argumento de entrada o la cantidad de argumentos existentes.

Utilice $# para comprobar si existe un argumento de entrada en Bash

Dentro de Bash, una variable especial, $#, contiene el argumento de entrada. Con $#, puede verificar cuántos argumentos de entrada se han pasado a su script Bash.

Un simple script de Bash le mostrará lo que contiene esta variable $# cuando se pasa sin argumentos o cuando se pasa con dos argumentos.

#!/bin/bash

echo "The number of input arguments passed to this script: "
echo $#

Ejecutemos el script sin argumentos de entrada:

$ ./script.sh

La salida del terminal se muestra a continuación:

The number of input arguments passed to this script:
0

Ahora, pasemos dos argumentos al mismo script:

$ ./script.sh one two

La salida del script se convierte en la siguiente:

The number of input arguments passed to this script:
2

Ahora, podemos usar $# y una declaración condicional que verifique si $# es igual a cero (es decir, sin argumentos de entrada) dentro de nuestro script para salir cuando sea true. Si $# es mayor que 0, la condición se vuelve falsa y se ejecuta la parte else de la sentencia condicional.

#!/bin/bash

if [ $# -eq 0 ]
  then
    echo "No input arguments exist"
    exit 1
else
    echo "The number of input arguments passed:"
    echo $#
fi

Ejecutemos el script usando el siguiente comando sin argumentos:

$ ./script.sh

La salida del código:

No input arguments exist

Ahora, ejecutemos un comando de script diferente con argumentos:

$ ./script.sh one two

La salida del código es diferente porque la verificación de la condición equivale a false:

The number of input arguments passed:
2

Aparte de eso, podemos usar otra variable especial que usa el $[número] para acceder al argumento de entrada. Estos son parámetros posicionales que podemos usar dentro de Bash.

Si sabemos que obtendremos tres variables o lo hemos comprobado, podemos acceder a las tres variables usando el código a continuación.

#!/bin/bash

echo "The input arguments are:"
echo $1 $2 $3

La salida del código, cuando se pasa con tres argumentos, será la siguiente:

The input arguments are:
one two three

Use $1 para verificar si existe un argumento de entrada en Bash

Recuerde los parámetros posicionales que discutimos en la sección anterior. Podemos usar el primero, $1, para comprobar si se ha pasado algún argumento de entrada, ya que si no hay ningún argumento de entrada, no puede haber ningún valor dentro del parámetro posicional, $1.

Por lo tanto, podemos usar la declaración if-else donde la expresión de condición verifica si hay un valor dentro del parámetro posicional, $1. Sin embargo, si hay un valor, repite el número de argumentos de entrada y el primer argumento usando los parámetros posicionales.

#!/bin/bash

if [ -z "$1" ]
  then
    echo "Please, pass an argument"
    exit 1
else
    echo "The number of input arguments are"
    echo $#
    echo "The first one is"
    echo $1
fi

Ejecutemos el código sin argumentos:

$ ./script.sh

La salida del script:

Please, pass an argument

Ahora, vamos a ejecutarlo con algunos argumentos:

$ ./script.sh delft stack blog

La salida del código:

The number of input arguments are
3
The first one is
delft
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Artículo relacionado - Bash Input