我可以通过执行以下操作来在命令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
您可以,只需启用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