7

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?

Dims
  • 3,255

3 Answers3

6

Just add these line before section you want to debug.

set -v -x -e

and to disable it.

set +v +x +e

asktyagi
  • 675
2

enable debugging in your script and output debugging for functions with functrace.

set -x
set -o functrace
αғsнιη
  • 41,407
1

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.

PJF
  • 56