Cómo leer argumentos de línea de comando en Bash

Cómo leer argumentos de línea de comando en Bash

Bash es un popular intérprete de comandos que se utiliza con frecuencia en sistemas operativos basados en Unix. Permite al usuario interactuar con el sistema a través de la línea de comando. Los argumentos de línea de comando son una forma común de pasar información a un script de Bash. Estos argumentos pueden ser opciones, banderas o datos que se utilizan en la ejecución del script.

En este artículo, aprenderás cómo leer los argumentos de línea de comando en Bash. Cubriremos los conceptos básicos de la entrada de línea de comando y presentaremos ejemplos útiles que te ayudarán a entender cómo pasar valores desde la línea de comandos a tus scripts de Bash.

📋 Aquí podrás encontrar✍
  1. ¿Qué son los argumentos de línea de comando?
  2. Cómo leer los argumentos de línea de comando
  3. ¿Cómo paso opciones a mi script?
  4. Conclusión
  5. Preguntas frecuentes
    1. ¿Cómo puedo verificar si un argumento de línea de comando está vacío?
    2. ¿Cómo puedo leer todos los argumentos de la línea de comandos?
    3. ¿Cómo puedo hacer que mi script funcione con diferentes números de argumentos?
    4. ¿Cómo puedo definir valores predeterminados para mis argumentos?

¿Qué son los argumentos de línea de comando?

Los argumentos de línea de comando son valores que se pasan a un script de Bash cuando se ejecuta desde la línea de comando. Los argumentos de línea de comando se separan por un espacio y se envían al script después del nombre del script a ejecutar.

Es común que los comandos de Bash tengan banderas o opciones que controlen su comportamiento, como la opción `-h` para mostrar la ayuda o `-f` para proporcionar un archivo de entrada. Estas banderas también se pasan a través de la línea de comandos como argumentos.

Cómo leer los argumentos de línea de comando

Hay varias formas de leer los argumentos de línea de comandos en Bash. La forma más simple es usar las variables de posición de argumentos. Bash define automáticamente variables especiales, como `$0`, `$1`, `$2`, etc., que contienen información sobre los argumentos de línea de comando.

La variable `$0` contiene el nombre del script que se está ejecutando. La variable `$1` contiene el primer argumento de línea de comando, `$2` contiene el segundo argumento, y así sucesivamente. Esto significa que si queremos acceder al segundo argumento, podemos usar la variable `$2`. A continuación, se muestra un ejemplo sencillo que lee dos argumentos de línea de comando y los imprime en la pantalla:


#!/bin/bash

echo "El script se llama: $0"
echo "El primer argumento es: $1"
echo "El segundo argumento es: $2"

En este ejemplo, `$0` contiene el nombre del script, `$1` contiene el primer argumento y `$2` contiene el segundo argumento. Si nuestro script se llama `mi_script.sh` y lo ejecutamos con el siguiente comando:


$ ./mi_script.sh hola mundo

El script imprimirá:


El script se llama: mi_script.sh
El primer argumento es: hola
El segundo argumento es: mundo

¿Cómo paso opciones a mi script?

En Bash, las opciones de línea de comando se suelen pasar a través de banderas. Las banderas son una secuencia de caracteres que se pasan después del nombre del script y que empiezan con un guion. Por ejemplo, si queremos definir una bandera `-f` en nuestro script para proporcionar el nombre de un archivo de entrada, podemos leer esa opción utilizando una construcción `case` o simplemente con una bandera seguida del nombre de archivo. Ejemplo:


#!/bin/bash

while getopts ":f:" opt; do
case $opt in
f)
archivo_entrada="$OPTARG"
;;
?)
echo "Opción inválida: -$OPTARG" >&2
exit 1
;;
:)
echo "La opción -$OPTARG requiere un argumento." >&2
exit 1
;;
esac
done

echo "El archivo de entrada es: $file_input"

Podemos llamar a este script con el argumento `-f` seguido del nombre del archivo de entrada que deseamos abrir:


$ ./mi_script.sh -f archivo.txt

En este ejemplo, la variable $OPTARG contiene el nombre del archivo, y el script lo almacena en la variable `$archivo_entrada`.

Conclusión

Leer argumentos de línea de comando en Bash es una habilidad fundamental para cualquier programador de scripts de Bash. Con los conceptos básicos que cubrimos en este artículo, estarás en camino de crear scripts de Bash más útiles y versátiles.

Preguntas frecuentes

¿Cómo puedo verificar si un argumento de línea de comando está vacío?

Puedes usar la expresión `if [ -z $1 ]` para verificar si el primer argumento está vacío.

¿Cómo puedo leer todos los argumentos de la línea de comandos?

Puedes usar una construcción `for` con la variable `$@` para leer todos los argumentos. Ejemplo:

#!/bin/bash

for arg in "$@"
do
echo "Argumento: $arg"
done

¿Cómo puedo hacer que mi script funcione con diferentes números de argumentos?

Puedes usar una construcción `while` con la variable `shift` para iterar sobre todos los argumentos. Ejemplo:

#!/bin/bash

while [ "$1" != "" ]; do
caso $1 en
-f | --file ) archivo="$2"
shift 2
;;
-d | --directory ) directorio="$2"
shift 2
;;
* ) echo "Opción desconocida: $1"
exit 1
esac
done

¿Cómo puedo definir valores predeterminados para mis argumentos?

Puedes utilizar la sintaxis `${variable:-valor_predeterminado}` para definir un valor predeterminado para una variable si no está definida. Ejemplo:

#!/bin/bash

archivo="$1"
directorio="${2:-/tmp}"

echo "El archivo es: $archivo"
echo "El directorio es: $directorio"

En este ejemplo, si el segundo argumento no está definido, se utilizará `/tmp` como valor predeterminado para la variable `$directorio`.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir