web-dev-qa-db-ja.com

関数終了時のBashトラップ

関数が終了するときにbashでコマンドを呼び出すことは可能ですか?私は次のようなものを意味します:

function foo
{
    # something like this maybe?
    trap "echo \"exit function foo\"" EXIT

    # do something
}

foo

そして、出口関数fooを出力したいと思います。

13
bercik

はい、RETURNをトラップできます:

$ function foo() {
>   trap "echo finished" RETURN
>   echo "doing some things"
> }
$ foo

表示されます

doing some things
finished

man bashによるtrapビルトインの説明から:

SigspecがRETURNの場合、コマンドargは、Shell関数またはスクリプトがで実行されるたびに実行されます。または、ソースのビルトインが実行を終了します。

19
Aaron