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