Bash スクリプトの「set -e」はどういう意味ですか? 質問する

Bash スクリプトの「set -e」はどういう意味ですか? 質問する

私は、パッケージが解凍される前にスクリプトが実行するpreinstファイルの内容を研究しています。デビアンアーカイブ (.deb) ファイル。

スクリプトには次のコードがあります。

#!/bin/bash
set -e
# Automatically added by dh_installinit
if [ "$1" = install ]; then
   if [ -d /usr/share/MyApplicationName ]; then
     echo "MyApplicationName is just installed"
     return 1
   fi
   rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf
   rm -Rf $HOME/.local/share/file-manager/actions/*
fi
# End automatically added section

私の最初の質問は次の行についてです:

set -e

スクリプトの残りの部分は非常にシンプルだと思います。Debian/ウブントゥパッケージ マネージャーがインストール操作を実行しています。実行されている場合は、アプリケーションがシステムにインストールされたかどうかを確認します。インストールされている場合は、スクリプトは「MyApplicationName がインストールされました」というメッセージを出力して終了します (return 1つまり、「エラー」で終了するということですね)。

ユーザーが Debian/Ubuntu パッケージ システムにパッケージのインストールを要求している場合、スクリプトは 2 つのディレクトリも削除します。

これは正しいでしょうか、それとも何か見落としているのでしょうか?

ベストアンサー1

からとhelp setBash リファレンス ドキュメント: Set 組み込み関数:

  -e  Exit immediately if a command exits with a non-zero status.

しかし、一部の人はこれを悪い習慣だと考えています(Bash FAQとIRCC の フリーノード#bash FAQ 作成者)。以下を使用することをお勧めします。

trap 'do_something' ERR

エラーが発生したときに関数を実行しますdo_something

見るset -e (または set -o errexit、または trap ERR) が期待どおりに動作しないのはなぜですか?

おすすめ記事