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