1. ホーム
  2. linux

[解決済み] bashスクリプトでset -eはどういう意味ですか?

2022-03-16 20:02:46

質問

この内容を勉強しています プリインストール このスクリプトは、そのパッケージが Debian アーカイブ (.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/Ubuntuのパッケージマネージャがインストール作業を実行しているかどうかをチェックします。もし実行されていれば、私のアプリケーションがシステムにインストールされたばかりかどうかをチェックします。もしインストールされていれば、スクリプトは次のようなメッセージを表示します。 MyApplicationName is just installed" で終わり、( return 1 というのは、「エラー」で終わるということですよね)。

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

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

解決方法は?

から help set :

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

しかし、一部の人たち(bash FAQやirc freenode #bash FAQの作者)からはバッドプラクティスと見なされています。使用することが推奨されています。

trap 'do_something' ERR

を実行します。 do_something 関数を使用します。

参照 http://mywiki.wooledge.org/BashFAQ/105