debug( ) 输出开头的+
和的意义是什么?++
bash
set -x
原文是这样的
++ 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'
答案1
这+
是PS4
提示(就像PS1
通常的提示$
或其某些变体一样,这是默认的交互式提示)。当使用 启用跟踪时,它会在执行每个命令之前输出set -x
。
手册bash
是这样说的:
PS4
该参数的值会像 一样展开,
PS1
并且在执行跟踪期间显示每个命令 bash 之前打印该值。的第一个字符PS4
根据需要被复制多次,以指示多个间接级别。默认为+
.
您可能看到的倍数+
是由于在子 shell 中执行的命令造成的。
显示三层子 shell 的示例:
$ cat script.sh
#!/bin/bash
echo "$( echo "$( echo hi )" )"
$ bash -x script.sh
+++ echo hi
++ echo hi
+ echo hi
hi