1 |
# |
2 |
# Some shell errors are unrecoverable! Like divide by zero (except in bash. |
3 |
# |
4 |
# Any others? |
5 |
|
6 |
|
7 |
#### Unrecoverable: divide by zero in redirect word |
8 |
|
9 |
$SH -c ' |
10 |
echo hi > file$(( 42 / 0 )) in |
11 |
echo inside=$? |
12 |
' |
13 |
echo outside=$? |
14 |
|
15 |
## STDOUT: |
16 |
outside=1 |
17 |
## END |
18 |
|
19 |
## OK dash/ash STDOUT: |
20 |
outside=2 |
21 |
## END |
22 |
|
23 |
# bash makes the command fail |
24 |
## OK bash STDOUT: |
25 |
inside=1 |
26 |
outside=0 |
27 |
## END: |
28 |
|
29 |
|
30 |
#### Unrecoverable: divide by zero in conditional word |
31 |
|
32 |
$SH -c ' |
33 |
if test foo$(( 42 / 0 )) = foo; then |
34 |
echo true |
35 |
else |
36 |
echo false |
37 |
fi |
38 |
echo inside=$? |
39 |
' |
40 |
echo outside=$? |
41 |
|
42 |
echo --- |
43 |
|
44 |
$SH -c ' |
45 |
if test foo$(( 42 / 0 )) = foo; then |
46 |
echo true |
47 |
fi |
48 |
echo inside=$? |
49 |
' |
50 |
echo outside=$? |
51 |
|
52 |
## STDOUT: |
53 |
outside=1 |
54 |
--- |
55 |
outside=1 |
56 |
## END |
57 |
|
58 |
## OK dash/ash STDOUT: |
59 |
outside=2 |
60 |
--- |
61 |
outside=2 |
62 |
## END |
63 |
|
64 |
# bash makes the command fail |
65 |
## OK bash STDOUT: |
66 |
inside=1 |
67 |
outside=0 |
68 |
--- |
69 |
inside=1 |
70 |
outside=0 |
71 |
## END: |
72 |
|
73 |
# weird difference in zsh! |
74 |
|
75 |
## BUG zsh STDOUT: |
76 |
outside=1 |
77 |
--- |
78 |
outside=0 |
79 |
## END |
80 |
|
81 |
|
82 |
#### Unrecoverable: divide by zero in case |
83 |
|
84 |
$SH -c ' |
85 |
case $(( 42 / 0 )) in |
86 |
(*) echo hi ;; |
87 |
esac |
88 |
echo inside=$? |
89 |
' |
90 |
echo outside=$? |
91 |
|
92 |
echo --- |
93 |
|
94 |
$SH -c ' |
95 |
case foo in |
96 |
( $(( 42 / 0 )) ) |
97 |
echo hi |
98 |
;; |
99 |
esac |
100 |
echo inside=$? |
101 |
' |
102 |
echo outside=$? |
103 |
|
104 |
## STDOUT: |
105 |
outside=1 |
106 |
--- |
107 |
outside=1 |
108 |
## END |
109 |
|
110 |
## OK dash/ash STDOUT: |
111 |
outside=2 |
112 |
--- |
113 |
outside=2 |
114 |
## END |
115 |
|
116 |
## OK bash STDOUT: |
117 |
inside=1 |
118 |
outside=0 |
119 |
--- |
120 |
inside=1 |
121 |
outside=0 |
122 |
## END: |
123 |
|
124 |
## BUG zsh STDOUT: |
125 |
outside=0 |
126 |
--- |
127 |
outside=0 |
128 |
## END |
129 |
|
130 |
|
131 |
#### Unrecoverable: ${undef?message} |
132 |
|
133 |
$SH -c ' |
134 |
echo ${undef?message} |
135 |
echo inside=$? |
136 |
' |
137 |
echo outside=$? |
138 |
|
139 |
$SH -c ' |
140 |
case ${undef?message} in |
141 |
(*) echo hi ;; |
142 |
esac |
143 |
echo inside=$? |
144 |
' |
145 |
echo outside=$? |
146 |
|
147 |
## STDOUT: |
148 |
outside=1 |
149 |
outside=1 |
150 |
## END |
151 |
## OK dash STDOUT: |
152 |
outside=2 |
153 |
outside=2 |
154 |
## END |
155 |
## OK bash STDOUT: |
156 |
outside=127 |
157 |
outside=127 |
158 |
## END |
159 |
|
160 |
#### ${undef} with nounset |
161 |
|
162 |
$SH -c ' |
163 |
set -o nounset |
164 |
case ${undef} in |
165 |
(*) echo hi ;; |
166 |
esac |
167 |
echo inside=$? |
168 |
' |
169 |
echo outside=$? |
170 |
|
171 |
## STDOUT: |
172 |
outside=1 |
173 |
## END |
174 |
|
175 |
## OK dash STDOUT: |
176 |
outside=2 |
177 |
## END |
178 |
|
179 |
## OK bash STDOUT: |
180 |
outside=127 |
181 |
## END |
182 |
|
183 |
## BUG zsh STDOUT: |
184 |
outside=0 |
185 |
## END |
186 |
|