1 | ## compare_shells: bash-4.4 mksh zsh
|
2 | ## oils_failures_allowed: 0
|
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 | #### non-{ } function bodies can be serialized (rare)
|
52 |
|
53 | # TODO: we can add more of these
|
54 |
|
55 | f() ( echo 'subshell body' )
|
56 |
|
57 | code=$(typeset -f f)
|
58 |
|
59 | $SH -c "$code; f"
|
60 |
|
61 | ## STDOUT:
|
62 | subshell body
|
63 | ## END
|