English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Funciones de Shell

Linux shell permite definir funciones que se pueden llamar en scripts de shell.

El formato de definición de funciones en shell es el siguiente:

[ function ] nombreDeLaFunción [() ]
{
    acción;
    [return int;]
}

Notas:

  • 1、Puede llevar una definición de function fun()  o definirse directamente fun()  sin parámetros.

  • 2、La devolución de parámetros, puede mostrar: return retorno, si no se agrega, se utilizará como valor de retorno el resultado de la última orden ejecutada. return seguido de un número n (0-255

A continuación, se define y llama a una función:

#!/bin/bash
# author:基础教程网
# url:es.oldtoolbag.com
demoFun()
    echo "¡Este es mi primer función de shell!"
}
echo ""-----Inicio de la ejecución de la función-----"
demoFun
echo ""-----Finalización de la ejecución de la función-----"

Resultados de salida:

-----Inicio de la ejecución de la función-----
¡Este es mi primer función de shell!
-----Finalización de la ejecución de la función-----

A continuación, se define una función con una declaración return:

#!/bin/bash
# author:基础教程网
# url:es.oldtoolbag.com
funWithReturn()
    echo "Esta función realizará la suma de los dos números ingresados..."
    echo "Ingrese el primer número: "
    read aNum
    echo "Ingrese el segundo número: "
    read anotherNum
    echo "Los dos números son $aNum y $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "La suma de los dos números ingresados es $? !"

La salida será similar a la siguiente:

Esta función realizará la suma de los dos números ingresados...
Ingrese el primer número: 
1
Ingrese el segundo número: 
2
Los dos números son 1 y 2 !
La suma de los dos números ingresados es 3 !

El valor de retorno de la función se obtiene después de llamar a la función mediante $?.

Atención: todas las funciones deben definirse antes de su uso. Esto significa que deben colocarse en la parte inicial del script, hasta que el intérprete de shell encuentre por primera vez la función, para poder usarla. Al llamar a una función, se utiliza únicamente su nombre.

Parámetros de la función

En Shell, al llamar a una función, se puede pasarle parámetros. Dentro del cuerpo de la función, se obtiene el valor del parámetro mediante la forma $n, por ejemplo, $1Representa el primer parámetro, $2Representa el segundo parámetro...

Ejemplo de función con parámetros:

#!/bin/bash
# author:基础教程网
# url:es.oldtoolbag.com
funWithParam()
    echo "El primer parámetro es $1 !"
    echo "El segundo parámetro es $2 !"
    echo "El décimo parámetro es $10 !"
    echo "El décimo parámetro es ${10} ¡"
    echo "El décimo primer parámetro es ${11} ¡"
    echo "El número total de parámetros es $# ¡"
    echo "Escribir todos los parámetros como una cadena $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

Resultados de salida:

El primer parámetro es 1 !
El segundo parámetro es 2 !
El décimo parámetro es 10 !
El décimo parámetro es 34 !
El décimo primer parámetro es 73 !
El número total de parámetros es 11 !
Escribir todos los parámetros como una cadena 1 2 3 4 5 6 7 8 9 34 73 !

Atención, $10 No se puede obtener el décimo parámetro, para obtener el décimo parámetro se necesita ${10}. Cuando n>=10Cuando, se debe usar ${n} para obtener el parámetro.

Además, hay algunos caracteres especiales para manejar parámetros:

Manejo de parámetros Descripción
$# Número de parámetros pasados al script o función
$* Mostrar todos los parámetros pasados al script como una única cadena
$$ ID del proceso actual del script
$! ID del último proceso ejecutado en segundo plano
$@ Con $*Igual, pero al usarlo, se deben agregar comillas y devolver cada parámetro dentro de las comillas.
$- Mostrar las opciones actuales de Shell utilizadas, que son equivalentes a la función del comando set.
$? Mostrar el estado de salida del último comando. 0 indica que no hay errores, cualquier otro valor indica que hay errores.