1 #!/bin/bash
2
3 ### Locals don't leak
4 f() {
5 local f_var=f_var
6 }
7 f
8 echo $f_var
9 # stdout:
10
11 ### Globals leak
12 f() {
13 f_var=f_var
14 }
15 f
16 echo $f_var
17 # stdout: f_var
18
19 ### Return statement
20 f() {
21 echo one
22 return 42
23 echo two
24 }
25 f
26 # stdout: one
27 # status: 42
28
29 ### Return at top level is error
30 return
31 echo bad
32 # N-I dash/mksh status: 0
33 # N-I bash status: 0
34 # N-I bash stdout: bad
35 # status: 1
36 # stdout-json: ""
37
38 ### Dynamic Scope
39 f() {
40 echo $g_var
41 }
42 g() {
43 local g_var=g_var
44 f
45 }
46 g
47 # stdout: g_var
48
49