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