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