Acho que ninguém respondeu exatamente à pergunta. Ele não perguntou se ele poderia ecoar cordas em ordem. Em vez disso, o autor da pergunta deseja saber se ele pode simular o comportamento do ponteiro de função.
Existem algumas respostas que são muito parecidas com o que eu faria e quero expandi-las com outro exemplo.
Do autor:
function x() {
echo "Hello world"
}
function around() {
echo "before"
($1) <------ Only change
echo "after"
}
around x
Para expandir isso, teremos a função x echo "Hello world: $ 1" para mostrar quando a execução da função realmente ocorre. Vamos passar uma string que é o nome da função "x":
function x() {
echo "Hello world:$1"
}
function around() {
echo "before"
($1 HERE) <------ Only change
echo "after"
}
around x
Para descrever isso, a string "x" é passada para a função around () que ecoa "antes", chama a função x (através da variável $ 1, o primeiro parâmetro passado para around) passando o argumento "AQUI" e finalmente ecoa depois .
Como outro aparte, esta é a metodologia para usar variáveis como nomes de funções. As variáveis realmente contêm a string que é o nome da função e ($ variable arg1 arg2 ...) chama a função passando os argumentos. Ver abaixo:
function x(){
echo $3 $1 $2 <== just rearrange the order of passed params
}
Z="x"
($Z 10 20 30)
dá: 30 10 20, onde executamos a função chamada "x" armazenada na variável Z e passamos os parâmetros 10 20 e 30.
Acima, onde referimos funções atribuindo nomes de variáveis às funções para que possamos usar a variável no lugar de realmente saber o nome da função (que é semelhante ao que você pode fazer em uma situação de ponteiro de função muito clássica em c para generalizar o fluxo do programa, mas antes -selecionando as chamadas de função que você fará com base nos argumentos da linha de comando).
No bash, esses não são ponteiros de função, mas variáveis que se referem a nomes de funções que você usará posteriormente.