Myślę, że nikt nie odpowiedział na to pytanie. Nie zapytał, czy mógłby powtórzyć kolejno struny. Raczej autor pytania chce wiedzieć, czy może symulować zachowanie wskaźnika funkcji.
Jest kilka odpowiedzi, które są bardzo podobne do tego, co bym zrobił, i chcę je rozszerzyć o inny przykład.
Od autora:
function x() {
echo "Hello world"
}
function around() {
echo "before"
($1) <------ Only change
echo "after"
}
around x
Aby to rozwinąć, będziemy mieć funkcję x echo „Witaj świecie: $ 1”, która będzie pokazywać, kiedy naprawdę następuje wykonanie funkcji. Przekażemy ciąg będący nazwą funkcji „x”:
function x() {
echo "Hello world:$1"
}
function around() {
echo "before"
($1 HERE) <------ Only change
echo "after"
}
around x
Aby to opisać, ciąg „x” jest przekazywany do funkcji around (), która wywołuje echo „przed”, wywołuje funkcję x (poprzez zmienną $ 1, pierwszy parametr przekazany dookoła), przekazując argument „TUTAJ”, a na końcu odbija się echem po .
Poza tym jest to metodologia używania zmiennych jako nazw funkcji. W rzeczywistości zmienne zawierają łańcuch będący nazwą funkcji i ($ zmienna arg1 arg2 ...) wywołuje funkcję przekazującą argumenty. Zobacz poniżej:
function x(){
echo $3 $1 $2 <== just rearrange the order of passed params
}
Z="x"
($Z 10 20 30)
daje: 30 10 20, gdzie wykonaliśmy funkcję o nazwie "x" przechowywaną w zmiennej Z i przekazaliśmy parametry 10 20 i 30.
Powyżej, w którym odwołujemy się do funkcji, przypisując im nazwy zmiennych, abyśmy mogli użyć zmiennej zamiast znajomości nazwy funkcji (co jest podobne do tego, co można zrobić w bardzo klasycznej sytuacji wskaźnika funkcji w c w celu uogólnienia przepływu programu, ale przed -wybierając wywołania funkcji, które będziesz wykonywać na podstawie argumentów wiersza poleceń).
W bashu nie są to wskaźniki funkcji, ale zmienne, które odnoszą się do nazw funkcji, których później użyjesz.