bash DEBUG 陷阱中的取消命令

Omr*_*oth 2 bash

我在 bash 中使用以下命令捕获 DEBUG:

trap 'python /trap.py --command "$BASH_COMMAND"' DEBUG
Run Code Online (Sandbox Code Playgroud)

是否有我可以在trap.py其中执行的命令可以防止执行被捕获的命令?

Sté*_*las 6

这就是该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 ]]
Run Code Online (Sandbox Code Playgroud)

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