Я думаю, что никто толком не ответил на вопрос. Он не спрашивал, может ли он повторять строки по порядку. Скорее автор вопроса хочет знать, может ли он имитировать поведение указателя функции.
Есть несколько ответов, которые очень похожи на то, что я бы сделал, и я хочу расширить его еще одним примером.
От автора:
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, первый параметр, переданный в round), передавая аргумент «HERE», наконец выводит после .
Кроме того, это методология использования переменных в качестве имен функций. Переменные фактически содержат строку, которая является именем функции, и ($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 это не указатели на функции, а переменные, ссылающиеся на имена функций, которые вы позже будете использовать.
person
uDude
schedule
18.10.2015