シェルの関数内関数
シェルスクリプトは古き良きBourne Shellで書くものであり、Manual Page - sh(1)を参照するのが良い。SUSv4のShell Command Languageでは高機能すぎる。ふと気づいたが、古き良きBourne Shellであっても関数内関数が使える。
foo() { f() { echo foo; } } bar() { f() { echo bar; } } foo f bar f
実行すると(Heirloom Bourne Shellとbashとkshでは)下記のように表示された。
foo bar
何がうれしいのかと問われると、プロトタイプ継承みたいなことをするに際して、すこしうれしい場面があるように思う。