Google’s Shell Style Guide —
via Hacker News — doesn’t mention using
set -e or
-u, and neither does Gentoo’s guide, which
seriously undermines them both. They both have sensible advice, but
those two settings are the two most important things to include when
scripting with Bash. Bash doesn’t even become a scripting
language until those are set; without, scripts are just interactive
transcripts without the interactive part, i.e. a human to stop execution
when there are errors or unexpected behaviour.
My advice, before you read either of these guides, is to put the
following at the top of every script you write, before you start:
-eu. When working with a team put in the long version, with comments:
# Exit immediately if a command exits with a non-zero status. set -o errexit # Treat unset variables as an error when substituting. set -o nounset
If you know me, you’ll know that that’s not really my advice. My really real advice is: don’t write scripts with Bash, or most other shells. Learn and use Python instead, for example. Sure, shell scripts are convenient, but you really need 5+ years of writing shell scripts to understand enough of the many insidious ways that they’ll break on you. By which time I truly hope you will have learned that you shouldn’t use them except as short-lived conveniences. Even then I’m not sure.
Fwiw, neither Google nor Gentoo mention testing either.