bash DEBUG 陷阱中取消命令

bash DEBUG 陷阱中取消命令

我将 DEBUG 困在 bash 中:

trap 'python /trap.py --command "$BASH_COMMAND"' DEBUG

是否有一个我可以执行的命令trap.py来阻止执行被捕获的命令?

答案1

这就是该extdebug选项的用途(除其他外)。

设置时:

如果“DEBUG”陷阱运行的命令返回非零值,则跳过下一个命令并且不执行

因此,如果您希望跳过该命令,您需要做的就是设置该选项shopt -s extdebugtrap.py以非零退出状态返回。

$ bash -xc 'shopt -s extdebug; trap "[[ \$BASH_COMMAND != uname ]]" DEBUG; echo test; uname'
+ shopt -s extdebug
+ trap '[[ $BASH_COMMAND != uname ]]' DEBUG
++ [[ echo test != uname ]]
+ echo test
test
++ [[ uname != uname ]]

您可能需要查看bash手册以了解设置该选项的其他含义。

相关内容