bash 脚本调试输出 + 和 ++

bash 脚本调试输出 + 和 ++

debug( ) 输出开头的+和的意义是什么?++bashset -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

相关内容