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