4 ms·
I use the verbose version for readability: set -o errexit set -o nounset set -o pipefail Some commands need custom error handling, which means tur
by DCoder 10y ago
I use the verbose version for readability:
set -o errexit
set -o nounset
set -o pipefail
Some commands need custom error handling, which means turning off -e:
set +o errexit
ansible-playbook ...
if [[ "$?" != "0" ]]; then
echo -e "\e[1;31m""Error when executing ansible!""\e[0m"
exit 1
fi
set -o errexit
And if you use -e , you will probably need the default value helper to validate input arguments:
# the :- operator means "use the right side value if the left side ($1) is not set"
env=${1:-}
inventoryFile="${baseDir}/env/${env}/inventory"
if [[ -f "${inventoryFile}" ]]; then
echo -e "\e[1;31m""Invalid environment specified!""\e[0m"
exit 1
fi
- Ded7xSEoPKYNsDd 10y agoI feel your first example is better written like this: if ! ansible-playbook ... ; then echo -e "\e[1;31m""Error when executing ansible!""\e[0m" exit 1 fi But generally when I need to work around errexit, I tend to add something like " || true" or " || xyz_failed=true" to the end of the command line instead of turning it off and on again.