Comprobar si existe un argumento de entrada en Bash

  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 
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
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