LoginSignup
1
0

More than 1 year has passed since last update.

【Bash】シェルスクリプト終了時に遅延実行(後処理)させる【Bash版 Cleanup, defer や register_shutdown_function のたぐい】

Posted at

Bash でスクリプトの終了時に締め処理を実行させたい。キャッシュや一時ファイルの削除など。

締め処理を関数に定義して exit 直前に実行させればいいのですが、なぜか毎回入れ忘れる沼にハマったのでポカヨケが欲しかったのです。

つまり OnExitCleanUp 的なことをさせたいのです。Go 言語でいう defer延期・遅延 や、PHP でいう register_shutdown_function終了時用関数登録 のようなもの。たまにしか使わないので、すぐ忘れてしまう。

しかし「bash シェル 遅延 終了時 実行」でググってsleep を使った記事ばかり。意外なことに、なかなかドンピシャに記事がヒットしないというトラップにかったので、自分のググラビリティとして。

TL;DR (今北産業)

  • trap を使う
  • 発動シグナルに EXIT を使う
  • Ctrl+CSIGKILL などのシグナルにも発動させたい場合は以下の記事を参照。
#!/bin/bash

cleanup() {
    echo "cleaned up!"
}
trap cleanup EXIT

echo "forced error!"
exit 1

# Output:
# forced error!
# cleaned up!

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0