次のようにして、コマンドのmyHandler()
前に関数を実行できます。bash
function myHandler() {
...
}
trap 'myHandler' DEBUG
ただし、次のBASH_COMMAND
ように実行時の条件に基づいてスケジュールされたタスクを続行または中断できるようにしたいと思います。myHandler
function myHandler() {
if ! myCondition ; then
abort the execution of BASH_COMMAND right here
fi
# Proceed with the execution of BASH_COMMAND
}
可能ですか?
答え1
0extdebug
以外のコード(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