我将 DEBUG 困在 bash 中:
trap 'python /trap.py --command "$BASH_COMMAND"' DEBUG
是否有一个我可以执行的命令trap.py
来阻止执行被捕获的命令?
答案1
这就是该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 ]]
您可能需要查看bash
手册以了解设置该选项的其他含义。