Re:Why doesn't Bash's `set -e` do what I expected?
by stevebmark on Thursday October 06, 2022 @11:03PM
(#33116971)
The `let ++` example is pretty damning. I find Bash to be a poor and outdated shell that we’re stuck with for now. Its design is the best argument against LSD I know, it came out of the hippie drug days, and Bash reflects that with its madness.
[ Parent
| on HN ]
Re:Why doesn't Bash's `set -e` do what I expected?
by somat on Thursday October 06, 2022 @11:11PM
(#33117011)
A lot of the sins of shell are from it's primary role as an interactive interface to the computer. it's use as a scripting language was a nice secondary goal.
On the one hand it is nice to have your interactive interface and your scripts be the same language. on the other it is a bit horrifying the way all those convenient interactive features make your programs so prone to failure.
Re:Why doesn't Bash's `set -e` do what I expected?
by justin_oaks on Friday October 07, 2022 @04:13PM
(#33126352)
We'd probably all be better off if our scripts weren't in the same language as used by our interactive interface. I do paste snippets of scripting (if, for, etc.) into my interactive terminal from time to time, but that's rare compared to just typing commands to run.
I wouldn't mind it if all scripting in the shell had to be offloaded to a completely separate language that was less error prone and more consistent.
Re:Why doesn't Bash's `set -e` do what I expected?
by trashtester on Friday October 07, 2022 @04:12AM
(#33118614)
> The `let ++` example is pretty damning.
Seems kind of logical, the following c code behaves the same way.
#include <stdio.h>
int test(void) {
int i=0;
return i++;
}
void main(void) {
printf("i = %d\n", test());
}
'let i++' evaluates to / returns 0 before increasing i, just like c would.
Re:Why doesn't Bash's `set -e` do what I expected?
by stevebmark on Saturday October 08, 2022 @02:00PM
(#33134475)
I don't mean what it returns, I mean that returning non-zero trips up Bash into thinking it's a non-successful error code. The fact that doing math can trip up error detection implies a fundamental design flaw of the system. Which, I mean, we're in Bash, of course it's poorly designed. I didn't know it was quite this bad though.