Debug a script
From Linux Shell Scripting Tutorial - A Beginner's handbook
You need to run a shell script with -x option from the command line itself:
bash -x script-name
OR
bash -xv script-name
You can also modify shebang line to run an entire script in debugging mode:
#!/bin/bash -x echo "Hello ${LOGNAME}" echo "Today is $(date)" echo "Users currently on the machine, and their processes:" w
Use of set builtin command
Bash shell offers debugging options which can be turned on or off using set command.
- set -x : Display commands and their arguments as they are executed.
- set -v : Display shell input lines as they are read.
- set -n : Read commands but do not execute them. This may be used to check a shell script for syntax errors.
#!/bin/bash ### Turn on debug mode ### set -x # Run shell commands echo "Hello $(LOGNAME)" echo "Today is $(date)" echo "Users currently on the machine, and their processes:" ### Turn OFF debug mode ### set +x # Add more commands without debug mode
Another example using set -n and set -o noexec:
#!/bin/bash set -n # only read command but do not execute them set -o noexec echo "This is a test" # no file is created as bash will only read commands but do not executes them >/tmp/debug.txt
See also
External links
- How to debug a Shell Script under Linux or UNIX.