Je ne pense pas que quiconque ait tout à fait répondu à la question. Il n'a pas demandé s'il pouvait faire écho aux chaînes dans l'ordre. Au contraire, l'auteur de la question veut savoir s'il peut simuler le comportement du pointeur de fonction.
Il y a quelques réponses qui ressemblent beaucoup à ce que je ferais, et je veux les développer avec un autre exemple.
De l'auteur:
function x() {
echo "Hello world"
}
function around() {
echo "before"
($1) <------ Only change
echo "after"
}
around x
Pour développer cela, nous aurons la fonction x echo "Hello world: $ 1" pour montrer quand l'exécution de la fonction se produit réellement. Nous allons passer une chaîne qui est le nom de la fonction "x":
function x() {
echo "Hello world:$1"
}
function around() {
echo "before"
($1 HERE) <------ Only change
echo "after"
}
around x
Pour décrire cela, la chaîne "x" est passée à la fonction around () qui fait écho "before", appelle la fonction x (via la variable $ 1, le premier paramètre passé à around) en passant l'argument "HERE", enfin écho après .
En outre, c'est la méthodologie pour utiliser des variables comme noms de fonction. Les variables contiennent en fait la chaîne qui est le nom de la fonction et ($ variable arg1 arg2 ...) appelle la fonction en passant les arguments. Voir ci-dessous:
function x(){
echo $3 $1 $2 <== just rearrange the order of passed params
}
Z="x"
($Z 10 20 30)
donne: 30 10 20, où nous avons exécuté la fonction nommée "x" stockée dans la variable Z et passé les paramètres 10 20 et 30.
Ci-dessus où nous référençons les fonctions en attribuant des noms de variables aux fonctions afin que nous puissions utiliser la variable au lieu de connaître réellement le nom de la fonction (ce qui est similaire à ce que vous pourriez faire dans une situation de pointeur de fonction très classique en c pour généraliser le flux du programme mais pré -sélectionner les appels de fonction que vous allez effectuer en fonction des arguments de la ligne de commande).
Dans bash, ce ne sont pas des pointeurs de fonction, mais des variables qui font référence à des noms de fonctions que vous utiliserez plus tard.