我在 bash 中使用以下命令捕获 DEBUG:
trap 'python /trap.py --command "$BASH_COMMAND"' DEBUG
Run Code Online (Sandbox Code Playgroud)
是否有我可以在trap.py其中执行的命令可以防止执行被捕获的命令?
这就是该extdebug选项的用途(除其他外)。
设置时:
如果“DEBUG”陷阱运行的命令返回非零值,则跳过下一个命令并且不执行
因此,如果您希望跳过该命令,您需要做的就是设置该选项shopt -s extdebug并trap.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手册以了解设置该选项的其他含义。