What are / is the significance of
++ at the beginning of
bash debug (
set -x) output?
The original text looks like this
++ delete + exitstatus=0 + '[' 0 = 0 ']' ++ delete + whiptail --title 'Command output 1311' --separate-output --scrolltext --msgbox '/usr/bin/raspi-config-DEBUG.sh: line 1311: delete: command not found' 17 80 10 + echo '1317 done printing choice to stdout'
+ is the
PS4 prompt (just like
PS1 usually holds
$ or some variation thereof, which is the default interactive prompt). It is outputted before each command executed when tracing is enabled with
bash manual says this:
The value of this parameter is expanded as with
PS1and the value is printed before each command bash displays during an execution trace. The first character of
PS4is replicated multiple times, as necessary, to indicate multiple levels of indirection. The default is
+ that you may see are due to commands being executed in subshells.
Example showing three levels of subshells:
$ cat script.sh #!/bin/bash echo "$( echo "$( echo hi )" )"
$ bash -x script.sh +++ echo hi ++ echo hi + echo hi hi