Non credo che qualcuno abbia risposto del tutto alla domanda. Non ha chiesto se poteva ripetere le stringhe in ordine. Piuttosto, l'autore della domanda vuole sapere se può simulare il comportamento del puntatore di funzione.
Ci sono un paio di risposte che sono molto simili a quello che farei io e voglio espanderle con un altro esempio.
Dall'autore:
function x() {
echo "Hello world"
}
function around() {
echo "before"
($1) <------ Only change
echo "after"
}
around x
Per espandere questo, avremo la funzione x echo "Hello world: $ 1" per mostrare quando si verifica realmente l'esecuzione della funzione. Passeremo una stringa che è il nome della funzione "x":
function x() {
echo "Hello world:$1"
}
function around() {
echo "before"
($1 HERE) <------ Only change
echo "after"
}
around x
Per descriverlo, la stringa "x" viene passata alla funzione around () che echi "prima", chiama la funzione x (tramite la variabile $ 1, il primo parametro passato a around) passando l'argomento "QUI", infine echi dopo .
Inoltre, questa è la metodologia per utilizzare le variabili come nomi di funzioni. Le variabili effettivamente contengono la stringa che è il nome della funzione e ($ variabile arg1 arg2 ...) chiama la funzione passando gli argomenti. Vedi sotto:
function x(){
echo $3 $1 $2 <== just rearrange the order of passed params
}
Z="x"
($Z 10 20 30)
dà: 30 10 20, dove abbiamo eseguito la funzione denominata "x" memorizzata nella variabile Z e passato i parametri 10 20 e 30.
Sopra dove facciamo riferimento alle funzioni assegnando nomi di variabili alle funzioni in modo che possiamo usare la variabile al posto di conoscere effettivamente il nome della funzione (che è simile a quello che potresti fare in una situazione molto classica del puntatore di funzione in c per generalizzare il flusso del programma ma pre -selezionando le chiamate di funzione che farai in base agli argomenti della riga di comando).
In bash questi non sono puntatori a funzioni, ma variabili che fanno riferimento a nomi di funzioni che userete successivamente.