次の手順を実行すると、bash
コマンドの前に関数myHandler()
を実行できます。
function myHandler() {
...
}
trap 'myHandler' DEBUG
ただし、次のように、myHandler
内の実行時条件に基づいて、差し迫ったBASH_COMMAND
の実行を続行または中止できるようにしたいと思います。
function myHandler() {
if ! myCondition ; then
abort the execution of BASH_COMMAND right here
fi
# Proceed with the execution of BASH_COMMAND
}
これは可能ですか?
extdebug
を有効にして、extdebug
からゼロ以外のコード( myHandler
オプションの説明を参照 )を返すことができます。
$ function myHandler() {
if [[ $SKIP = "true" ]]; then return 1; fi;
echo 'myHandler execute'
}
$ trap 'myHandler' DEBUG
$ shopt -s extdebug
$ echo 1
myHandler execute
1
$ SKIP=true
myHandler execute
$ echo 1