3
函数退出时,bash是否可以调用某些命令?我的意思是这样的:从函数退出时的Bash陷阱
function foo
{
# something like this maybe?
trap "echo \"exit function foo\"" EXIT
# do something
}
foo
而且我希望退出函数foo被打印出来。
函数退出时,bash是否可以调用某些命令?我的意思是这样的:从函数退出时的Bash陷阱
function foo
{
# something like this maybe?
trap "echo \"exit function foo\"" EXIT
# do something
}
foo
而且我希望退出函数foo被打印出来。
是的,你可以陷阱RETURN
:
$ function foo() {
> trap "echo finished" RETURN
> echo "doing some things"
> }
$ foo
将显示
doing some things
finished
从trap
内置的man bash
的描述:
如果SIGSPEC是回报,每次执行shell函数或脚本时,都会执行命令arg。或源内置完成执行。
而且你可以陷阱也返回这个函数的代码? – bercik
不;如果您想根据即将到来的函数返回码采取不同的操作,则需要使用“if”或“case”这样的条件。还要注意,'trap'在全局设置处理程序,所以一旦调用了'foo',就会替换'foo'之前存在的'RETURN'上的任何陷阱(假设'foo'的主体是'{。 ..}'command;'foo()(trap ...;)'不会影响调用上下文)。 – chepner
也就是说,除了'RETURN'上的陷阱之外,你还可以在任何非零返回状态*上捕获'ERR'。你只是不能设置不同的陷阱为1返回代码与返回代码为2. – chepner