Saya tidak berpikir ada orang yang menjawab pertanyaan itu. Dia tidak bertanya apakah dia bisa menggemakan string secara berurutan. Sebaliknya, penulis pertanyaan ingin tahu apakah dia dapat mensimulasikan perilaku penunjuk fungsi.
Ada beberapa jawaban yang mirip dengan yang saya lakukan, dan saya ingin mengembangkannya dengan contoh lain.
Dari penulis:
function x() {
echo "Hello world"
}
function around() {
echo "before"
($1) <------ Only change
echo "after"
}
around x
Untuk memperluas ini, kita akan memiliki fungsi x echo "Hello world: $ 1" untuk menunjukkan kapan eksekusi fungsi benar-benar terjadi. Kami akan mengirimkan string yang merupakan nama fungsi "x":
function x() {
echo "Hello world:$1"
}
function around() {
echo "before"
($1 HERE) <------ Only change
echo "after"
}
around x
Untuk menggambarkan ini, string "x" dilewatkan ke fungsi around () yang menggemakan "sebelum", memanggil fungsi x (melalui variabel $ 1, parameter pertama diteruskan ke sekitar) meneruskan argumen "DI SINI", akhirnya bergema setelah .
Selain itu, ini adalah metodologi untuk menggunakan variabel sebagai nama fungsi. Variabel sebenarnya menahan string yang merupakan nama fungsi dan ($ variabel arg1 arg2 ...) memanggil fungsi yang meneruskan argumen. Lihat di bawah:
function x(){
echo $3 $1 $2 <== just rearrange the order of passed params
}
Z="x"
($Z 10 20 30)
memberikan: 30 10 20, di mana kami menjalankan fungsi bernama "x" yang disimpan dalam variabel Z dan melewati parameter 10 20 dan 30.
Di atas di mana kita mereferensikan fungsi dengan menetapkan nama variabel ke fungsi sehingga kita dapat menggunakan variabel sebagai pengganti benar-benar mengetahui nama fungsi (yang mirip dengan apa yang mungkin Anda lakukan dalam situasi penunjuk fungsi yang sangat klasik di c untuk menggeneralisasi aliran program tetapi pra -memilih panggilan fungsi yang akan Anda buat berdasarkan argumen baris perintah).
Di bash ini bukan penunjuk fungsi, tetapi variabel yang merujuk ke nama fungsi yang nanti Anda gunakan.