Bash DEBUGトラップでコマンドをキャンセル

Bash DEBUGトラップでコマンドをキャンセル

BashでDEBUGがついています。

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このオプション設定の他の意味については、マニュアルを確認することをお勧めします。

関連情報