bash: "トラップハンドラDEBUG"を元に戻す

bash: "トラップハンドラDEBUG"を元に戻す

次のようにして、コマンドの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

関連情報