3 ms·
Is there any reason you prefer `set -e` over `&&`? I'm curious if this is a readability thing.
by spicypete 1y ago
Is there any reason you prefer `set -e` over `&&`? I'm curious if this is a readability thing.
- figmert 1y agoI'm firmly in that camp but I also always add `set -eux`, which makes it so much better at debugging as that gives you individual commands it runs before the output of them.
- figmert 1y agoTo be clear, the difference is something along this line: $ bash -ec 'echo hello && ls -la /tmp/ | grep systemd && false && echo testing' hello drwx------. 3 root root 60 Mar 29 18:33 systemd-private-bluetooth.service-yuSMVM drwx------. 3 root root 60 Mar 29 18:33 systemd-private-upower.service-YhHHP2 versus $ bash -euxc 'echo hello; ls -la /tmp/ | grep systemd; false; echo testing' + echo hello hello + ls -la /tmp/ + grep systemd drwx------. 3 root root 60 Mar 29 18:33 systemd-private-bluetooth.service-yuSMVM drwx------. 3 root root 60 Mar 29 18:33 systemd-private-upower.service-YhHHP2 + false Docker also supports the `SHELL` syntax now, which is even better, because you can set it once at the top of the Dockerfile without having to do the whole `set -eux` on every line.
- mdaniel 1y agoReadability is putting it mildly; do you write your shell scripts using that && style? No? Why not, is it for readability? I also have a hard time reasoning about && with anything other than the most braindead sequence of commands because: $(thing && if other_thing; then inner_thing1 && thing2; fi && ohgawd) And I just realized while typing that out that if its parser doesn't support ; then I guess one needs to RUN if conditional_thing \ then good_luck && \ fi && \ echo "whew"
- spicypete 1y agoThis is a valid point -- I replied to why this is the way it is here: https://news.ycombinator.com/item?id=43629049 https://news.ycombinator.com/item?id=43629049. I understand it's not ideal for many, and I am open to PRs!