Не думаю, что кто-то вполне ответил на вопрос.Он не спрашивал, может ли он отражать последовательности в порядке.Скорее, автор вопроса хочет знать, может ли он имитировать поведение указателя функции.
Есть пара ответов, которые очень похожи на то, что я бы сделал, и я хочу расширить их на другом примере.
От автора:
function x() {
echo "Hello world"
}
function around() {
echo "before"
($1) <------ Only change
echo "after"
}
around x
Чтобы развернуть это, у нас будет функция x echo "Hello world: $ 1", чтобы показать, когда действительно происходит выполнение функции.Мы передадим строку, которая является именем функции "x":
function x() {
echo "Hello world:$1"
}
function around() {
echo "before"
($1 HERE) <------ Only change
echo "after"
}
around x
Чтобы описать это, строка "x" передается функции around (), которая выдает "before", вызываетфункция x (через переменную $ 1, первый параметр, переданный в), передавая аргумент «ЗДЕСЬ», наконец, выводится после.
В качестве еще одного отступления, это методология использования переменных в качестве имен функций.Переменные фактически содержат строку, которая является именем функции, и ($ variable arg1 arg2 ...) вызывает функцию, передающую аргументы.См. Ниже:
function x(){
echo $3 $1 $2 <== just rearrange the order of passed params
}
Z="x" # or just Z=x
($Z 10 20 30)
дает: 30 10 20, где мы выполнили функцию с именем "x", хранящуюся в переменной Z, и передали параметры 10 20 и 30.
Выше, где мы ссылаемся на функцииназначая имена переменных функциям, чтобы мы могли использовать переменную вместо фактического знания имени функции (что аналогично тому, что вы могли бы сделать в очень классической ситуации с указателем на функцию в c для обобщения потока программы, но предварительно выбирая вызовы функцийвы будете делать, основываясь на аргументах командной строки).
В bash это не указатели на функции, а переменные, которые ссылаются на имена функций, которые вы позже используете.