Można zezwolić na zagnieżdżanie, kodując stos wywołań funkcji w FUNCNAMEzmiennej, np. Używając /jako separatora (nie sądzę, aby jakaś powłoka dopuszczała ukośniki w nazwach funkcji). Złapanie wszystkich instrukcji return byłoby jednak trudne, ale zamiast tego można było wykonać funkcje otoki.
Gilles
(ale tak naprawdę, jeśli chcesz ksh, wiesz, gdzie go znaleźć!)
Gilles
@Gilles: Dobra uwaga. Jestem na wakacjach i nie mam czasu na dalsze dochodzenie. Jeśli nie masz nic przeciwko, zrób ulepszenie lub podaj własną odpowiedź.
cuonglm
1
Dziękuję za odpowiedź i głosowałem za nią. Jednak nie zaakceptuję, ponieważ jest to okropne obejście. Wygląda na to, że odpowiedź brzmi „Dash cant do it”
Odpowiedzi:
Z dowolnymi powłokami POSIX:
Zauważ, że nie można wywołać funkcji zdefiniowanej przez
defun
treść funkcji zdefiniowanej przezdefun
.źródło
FUNCNAME
zmiennej, np. Używając/
jako separatora (nie sądzę, aby jakaś powłoka dopuszczała ukośniki w nazwach funkcji). Złapanie wszystkich instrukcji return byłoby jednak trudne, ale zamiast tego można było wykonać funkcje otoki.