Best Practices
A couple of Bash best practices summarized in a single page.
Note that most of the -o options have a shorter variant. Both are listed on this page.
All-in-one:
set -euo pipefail
if [[ "${DEBUG-0}" == "1" ]]; then set -x; fi
Note: to enable debug mode, run your script with DEBUG=1 ./my-script.sh
Exit as soon as one command fails:
set -e
set -o errexit
Fail when accessing unset variables:
set -u
set -o nounset
Fail when any command from a pipeline fails:
set -o pipefail
Optional debugging from argument:
if [[ "${DEBUG-0}" == "1" ]]; then set -o xtrace; fi
if [[ "${DEBUG-0}" == "1" ]]; then set -x; fi
# Call with
DEBUG=1 ./script.sh
Use double brackets [[ ]] for conditions:
[[ 1 < 2 ]] && echo "1 is less than 2"
Why ? It supports <>, &&, ||, grouping expressions with ( ), pattern matching [[ $name = *c* ]] and regular expression [[ $name =~ ^Ali ]]
Get the current script path:
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"