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: ""