Tomar argumentos de entrada opcionales en Bash

MD Aminul Islam 20 junio 2023
Tomar argumentos de entrada opcionales en Bash

A veces necesitamos crear una función dinámica que pueda ejecutarse en ambos sin pasar ningún argumento o pasar argumentos. Para hacer esto, debemos establecer algunos valores predeterminados para estos argumentos de modo que si los argumentos no se aprobaron al llamar a la función, podría usar los argumentos predeterminados.

Este artículo demostrará cómo crear argumentos de entrada opcionales para una función. También veremos algunos ejemplos y explicaciones para facilitar el tema.

Tomar argumentos de entrada opcionales en Bash

En el siguiente ejemplo, imprimiremos los valores predeterminados. Declaramos 4 variables que contienen valores predeterminados.

El código de nuestro ejemplo se verá así:

VAR1=${1:-foo}
VAR2=${2:-bar}
VAR3=${3:-1}
VAR4=${4:-$(date)}

echo "$VAR1"
echo "$VAR2"
echo "$VAR3"
echo "$VAR4"

Después de la ejecución del código, obtendremos el siguiente resultado:

foo
bar
1
Sat Aug 13 14:59:31 +06 2022

Ahora veamos un ejemplo avanzado. En el ejemplo compartido a continuación, creamos una función que puede funcionar con los parámetros 0, 1 y 2 y establecer un valor predeterminado dentro de la función.

Ahora, el código de nuestro ejemplo tiene el siguiente aspecto:

FindSum()
{
    VAR1=${1:-40}
    VAR2=${2:-50}

    if [ $# -lt 1 ];
    then
        echo "The provided parameters are: $VAR1, $VAR2."
    elif [ $# -lt 2 ];
    then
        echo
        echo "The provided parameters is: $VAR2."
    else
        echo
        echo "No parameters provided"
        VAR1=$1
        VAR2=$2
    fi
    SUM=$((VAR1+VAR2))
    echo "The sum of $VAR1 and $VAR2 is $SUM"
}

FindSum
FindSum 40
FindSum 70 30

Expliquemos el código parte por parte.

Primero, establecemos los valores por defecto de las variables usando las líneas VAR1=${1:-40} y VAR2=${2:-50}. Después de eso, verificamos si se dio o no el valor de estas variables.

Si el valor no los proporciona, tenemos que usar su valor predeterminado; de lo contrario, utilice el valor proporcionado por el usuario.

Por último, solo realizamos una operación de suma usando la línea SUM=$((VAR1+VAR2)) e imprimimos el resultado. Aquí, llamamos a la función sin ningún argumento por FindSum.

Nuevamente, llamamos a la función con un argumento usando la línea FindSum 40. Y llamamos a la función con dos argumentos usando la línea FindSum 70 30.

The provided parameters are: 40, 50.
The sum of 40 and 50 is 90

The provided parameters is: 50.
The sum of 40 and 50 is 90

No parameters provided
The sum of 70 and 30 is 100

Todos los códigos utilizados en este artículo están escritos en Bash. Solo funcionará en el entorno Linux Shell.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

Artículo relacionado - Bash Input