在Bash中你可以设置-x来启用调试,有没有办法知道是否已经在脚本中设置了?

edm*_*rce 16 debugging bash set

在制作复杂的bash脚本时,我经常会使用以下命令:

设置-x

如果脚本不正常,我可以调试脚本.

但是我有一些UI函数在调试模式下生成大量垃圾,所以我想将它们包含在条件中:

set -x
Run Code Online (Sandbox Code Playgroud)

问题是我无法弄清楚如何知道是否启用了调试模式.

我认为这是可能的,尽管有很多搜索,我似乎无法找到它.

提前感谢任何提示

Ort*_*ier 26

使用以下内容:

if [[ "$-" == *x* ]]; then
  echo "is set"
else
  echo "is not set"
fi
Run Code Online (Sandbox Code Playgroud)

3.2.5开始.特殊参数:

连字符扩展为调用时指定的当前选项标志,set内置命令或shell本身设置的那些(例如-i).

  • +1.可能很好地说明"$ - "究竟是什么 (4认同)

Ign*_*ams 9

$ [ -o xtrace ] ; echo $?
1
$ set -x
++ ...
$ [ -o xtrace ] ; echo $?
+ '[' -o xtrace ']'
+ echo 0
0
Run Code Online (Sandbox Code Playgroud)