I came across some good advice form the MIT Student Information Processing Board regarding writting safe shell scripts.
The recommandation is to use the following command in bash scripts 1 :
set -euf -o pipefailQuick Explanation
set -eExit the whole script if a command fail, instead of resuming on the next line.
set -uUnset variables are treated as an error and script exit immediately.
set -f
Disable filename expansion (globbing) upon seeing *, ? etc. Obviously, remove for globbing.
set -o pipefail
Causes pipeline (commands with |) to produce failure return code if any command errors, not just the last one. With set -e set above, this will exit our script.
Remove
-o flag for dash.