1 ## compare_shells: bash-4.4 mksh
2 ## oils_failures_allowed: 2
3
4 #### typeset -f prints function source code
5 : prefix; myfunc() { echo serialized; }
6
7 code=$(typeset -f myfunc)
8
9 $SH -c "$code; myfunc"
10
11 ## STDOUT:
12 serialized
13 ## END
14
15 #### typeset -f with function keyword (ksh style)
16 : prefix; function myfunc {
17 echo serialized
18 }
19
20 code=$(typeset -f myfunc)
21
22 $SH -c "$code; myfunc"
23
24 ## STDOUT:
25 serialized
26 ## END
27
28 #### typeset -f prints function source code - nested functions
29 outer() {
30 echo outer
31 : prefix; inner() {
32 echo inner
33 }
34 }
35
36 code=$(typeset -f outer)
37
38 if false; then
39 echo ---
40 echo $code
41 echo ---
42 fi
43
44 $SH -c "$code; outer; inner"
45
46 ## STDOUT:
47 outer
48 inner
49 ## END
50
51 #### OSH doesn't print non { } function bodies (rare)
52
53 f() ( echo 'subshell body' )
54
55 code=$(typeset -f f)
56
57 #$SH -c "$code; f"
58
59 echo "$code"
60
61
62 ## STDOUT:
63 f ()
64 {
65 ( echo 'subshell body' )
66 }
67 ## END
68
69 ## OK mksh STDOUT:
70 f() ( echo "subshell body" )
71 ## END