No creo que nadie haya respondido bien a la pregunta. No preguntó si podía hacer eco de las cuerdas en orden. Más bien, el autor de la pregunta quiere saber si puede simular el comportamiento del puntero de función.
Hay un par de respuestas que se parecen mucho a lo que haría yo, y quiero ampliarlas con otro ejemplo.
Del autor:
function x() {
echo "Hello world"
}
function around() {
echo "before"
($1) <------ Only change
echo "after"
}
around x
Para expandir esto, tendremos la función x echo "Hola mundo: $ 1" para mostrar cuándo ocurre realmente la ejecución de la función. Pasaremos una cadena que es el nombre de la función "x":
function x() {
echo "Hello world:$1"
}
function around() {
echo "before"
($1 HERE) <------ Only change
echo "after"
}
around x
Para describir esto, la cadena "x" se pasa a la función around () que echos "antes", llama a la función x (a través de la variable $ 1, el primer parámetro pasado a around) pasando el argumento "AQUÍ", finalmente echos después .
Como otro aparte, esta es la metodología para usar variables como nombres de funciones. Las variables realmente contienen la cadena que es el nombre de la función y ($ variable arg1 arg2 ...) llama a la función pasando los argumentos. Vea abajo:
function x(){
echo $3 $1 $2 <== just rearrange the order of passed params
}
Z="x"
($Z 10 20 30)
da: 30 10 20, donde ejecutamos la función llamada "x" almacenada en la variable Z y pasamos los parámetros 10 20 y 30.
Arriba, donde hacemos referencia a funciones asignando nombres de variable a las funciones para que podamos usar la variable en lugar de conocer realmente el nombre de la función (que es similar a lo que podría hacer en una situación de puntero de función muy clásica en c para generalizar el flujo del programa pero antes -seleccionando las llamadas a la función que realizará en función de los argumentos de la línea de comandos).
En bash, estos no son punteros a funciones, sino variables que hacen referencia a nombres de funciones que luego usa.