4 ms·
I guess this is as good of a time as any other to remind people to use the "unofficial" Bash strict mode: https://gist.github.com/robin-a-meade/58d60124b88b608
by j1elo 5y ago
I guess this is as good of a time as any other to remind people to use the "unofficial" Bash strict mode:
https://gist.github.com/robin-a-meade/58d60124b88b60816e8349d1e3938615 https://gist.github.com/robin-a-meade/58d60124b88b60816e8349... [^1]
And always, always, use ShellCheck (https://www.shellcheck.net/ https://www.shellcheck.net/) to catch most pitfalls and common mistakes on this powerful but dangerous language that is shell scripting.
[^1]: I think this gist is better than the original article in which it is based, because the article also suggested changing the IFS variable, which is not that good of an advice, so sadly the original text becomes a bad recommendation!
- thaumasiotes 5y ago> I guess this is as good of a time as any other to remind people to use the "unofficial" Bash strict mode Not really; the report doesn't mention any error in the script.
- leoh 5y agoThere is a reading which suggests that an environment variable being unset caused an overabundance of files being deleted. `set -u` causes the script to exit if any variables are unset.
- xvilka 5y agoAnd don't use shell for writing complex scripts, there are better automation tools and languages.
- tryauuum 5y agoI'd say that as long as bash script fits on a single screen you won't get any benefit from switching to some other tool or language
- rrll22 5y agoSuch as?
- dqpb 5y agoPython
- BeatQuestGames 5y agoFor example,take my project. https://github.com/Mylab6/PiBluetoothMidSetup https://github.com/Mylab6/PiBluetoothMidSetup While I could of done this in Bash. 1. I don't really like Bash 2. Python is much easier. I did challenge myself to only use Python's built in libraries, but aside from being unable to use Yaml everything works. I can imagine in some environments you might not have access to a Python interrupter though...
- deleted 5y ago[deleted]
- j1elo 5y agoGood point, except if an important part of your complex script is really just plumbing the outputs of one program to the inputs of another. Because that's what shell scripting excels at. Calling an external process is a first-class citizen in shell, whereas it is a somewhat clunky thing (or at the very least, much more verbose) to do in any other languages.