BASH script syntax check, track execution?

As a (Debian) Linux newbie I was wondering if there is a way to track the execution of a bash shell (.sh) script ? Like in Windows you trigger that with a echo on command in a batch file.

My first 'unix' script ever, but I'm wondering if it will run as expected :

#!/bin/bash
# switch maintenance mode off and go live with your ownCloud
occpath='/var/www/owncloud'
htuser='www-data'
alias occ-do=sudo -u $htuser php $occpath/occ
echo info: Switching to live-mode ..
occ-do maintenance:mode --on` 

the line I'm trying to create is like sudo -u www-data php /var/www/owncloud/occ (occ is what should be executed, let's assume I don't need a path for the php part).

Will this work; any mistakes in the syntax? And let's not forget my question about the execution following ..

2

3 Answers

Is there is a way to track the execution of a bash shell (.sh) script?

You can use set -x, set +x and set -v as described below.

  • set -x : Display commands and their arguments as they are executed.
  • set +x : Turn off debugging
  • set -v : Display shell input lines as they are read.

HowTo: Debug a Shell Script Under Linux or UNIX

1. Use -x option to debug a shell script

Run a shell script with -x option.

$ bash -x script-name
$ bash -x domains.sh

2. Use of set builtin command

Bash shell offers debugging options which can be turn 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.

You can use above two commands in shell script itself:

#!/bin/bash
clear
# turn on debug mode
set -x
for f in *
do file $f
done
# turn OFF debug mode
set +x
ls
# more commands

You can replace the standard Shebang line:

#!/bin/bash

with the following (for debugging) code:

#!/bin/bash -xv

Source HowTo: Debug a Shell Script Under Linux or UNIX


Further Reading

Put

set -x

at the point where you want debug info start to showand

set +x

where you want it off. I don't promise what you see will always be straightforward but you can get used to id after a while.

This is the simple way to check the syntax of your shell scripts :

Here in this website, the online syntax checker marks the line & displays the error which is caused due to incorrect syntax

As per the suggestion from other answers, you can try set -x & set +x to enable & disable debug mode respectively for tracking the execution of script.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like