I have a bash script myscript.sh, which has a bunch of functions inside. To run one function, I would write
source myscript.sh; myfunction
How debug such a function?
I have a bash script myscript.sh, which has a bunch of functions inside. To run one function, I would write
source myscript.sh; myfunction
How debug such a function?
Just add these line before section you want to debug.
set -v -x -e
and to disable it.
set +v +x +e
enable debugging in your script and output debugging for functions with functrace.
set -x
set -o functrace
yourScript.sh 2>1& >output_to_file.
You should also in Bash be able to use:
$ set -xT
which enables function trace and
$ set +xT
to disable.
Also, with reference to another posted answer, I don't recommend using -v for debugging (verbose mode) unless you are checking a script/set of shell commands for syntax. One other (general) solution that is sometimes useful is making use of the -n option in conjunction with -x. This will "run" a script/commands without actually doing the last step of running a command. This can often let you pick up difficult errors in shell expansions and the like without causing unwanted mayhem.