GNU/Linux >> Tutoriales Linux >  >> Linux

¿Funciones en variables de Shell?

Estoy leyendo esta publicación sobre el uso de funciones en variables bash shell. Observo que para usar funciones de shell, uno tiene que exportarlas y ejecutarlas en un shell secundario de la siguiente manera:

$ export foo='() { echo "Inside function"; }'
$ bash -c 'foo'
Inside function

Quiero preguntar si es posible que las funciones se definan en las variables bash shell de modo que puedan ejecutarse en el shell actual sin usar exportar y ejecutar un nuevo shell.

Respuesta aceptada:

No, no puedes.

Si desea usar una función en el shell actual, simplemente defínala y luego úsela más tarde:

$ foo() { echo "Inside function"; }
$ foo
Inside function

Antes del día de Shellshock, puede almacenar la función dentro de una variable, exportar la variable y usar la función en el sub-shell, porque bash apoyar la función de exportación, bash pondrá la definición de la función en la variable de entorno como:

foo=() {
  echo "Inside function"
}

luego interprete la función reemplazando = con espacio No hay intención de poner la función en la variable y hacer referencia a la variable que ejecutará la función.

Ahora, después de que Stéphane Chazelas encontró el error, esa característica se eliminó, ya no se almacenó ninguna definición de función en la variable de entorno simple. Ahora las funciones exportadas se codificarán agregando el prefijo BASH_FUNC_ y sufijo %% para evitar conflictos con las variables de entorno. bash El intérprete ahora puede determinar si son funciones de shell o no, independientemente del contenido de las variables. También necesita definir la función y exportarla explícitamente para usarla en sub-shell:

$ foo() { echo "Inside function"; }
$ export -f foo
$ bash -c foo
Inside function

De todos modos, si su ejemplo funcionó con su actual bash , entonces estás usando una versión vulnerable.


Linux
  1. Importe funciones y variables a Bash con el comando fuente

  2. Configuración de variables de entorno de Shell | Cáscara BASH

  3. Cómo crear y llamar funciones en Bash

  4. Cómo usar las funciones de shell de la línea de comandos en Linux

  5. Comprender las variables en Bash Shell en Linux

.bashrc frente a .bash_profile

Shell Scripting Parte V:Funciones en Bash

Bash Scripting - Funciones explicadas con ejemplos

Bash Beginner Series #2:Comprender las variables en Bash Shell Scripting

Bash Scripting Part6 - Crear y usar funciones de Bash

Tutorial de funciones de Bash Shell con 6 ejemplos prácticos