1 #!/usr/bin/env bash
2 #
3 # Some nonsensical combinations which can all be detected at PARSE TIME.
4 # All shells allow these, but right now OSH disallowed.
5 # TODO: Run the parser on your whole corpus, and then if there are no errors,
6 # you should make OSH the OK behavior, and others are OK.
7
8 ### Prefix env on assignment
9 f() {
10 # NOTE: local treated like a special builtin!
11 E=env local v=var
12 echo $E $v
13 }
14 f
15 # status: 0
16 # stdout: env var
17 # OK bash stdout: var
18 # OK osh status: 2
19 # OK osh stdout-json: ""
20
21 ### Redirect on assignment
22 f() {
23 # NOTE: local treated like a special builtin!
24 local E=env > _tmp/r.txt
25 }
26 rm -f _tmp/r.txt
27 f
28 test -f _tmp/r.txt && echo REDIRECTED
29 # status: 0
30 # stdout: REDIRECTED
31 # OK osh status: 2
32 # OK osh stdout-json: ""
33
34 ### Prefix env on control flow
35 for x in a b c; do
36 echo $x
37 E=env break
38 done
39 # status: 0
40 # stdout: a
41 # OK osh status: 2
42 # OK osh stdout-json: ""
43
44 ### Redirect on control flow
45 rm -f _tmp/r.txt
46 for x in a b c; do
47 break > _tmp/r.txt
48 done
49 test -f _tmp/r.txt && echo REDIRECTED
50 # status: 0
51 # stdout: REDIRECTED
52 # OK osh status: 2
53 # OK osh stdout-json: ""