I currently use this function to wrap executing commands and logging their execution, and return code, and exiting in case of a non-zero return code.
However this is problematic as apparently, it does double interpolation, making commands with single or double quotes in them break the script.
Can you recommend a better way?
Here’s the function:
do_cmd() { eval $* if [[ $? -eq 0 ]] then echo 'Successfully ran [ $1 ]' else echo 'Error: Command [ $1 ] returned $?' exit $? fi }
From http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters:
This means spaces in the arguments are re-quoted correctly.