apt-get はパッケージをインストールした後に bash スクリプトを終了します

apt-get はパッケージをインストールした後に bash スクリプトを終了します

私は答えを読みましたこの郵便受けしかし、私の問題には効果がないようです。

wget から stdin 経由で bash スクリプトを実行しています:

wget -O - http://serverip/subfolder/script | sudo bash

を使用しようとしましたapt-get -y --force-yes install <packages..> || trueが、リストされているもののうちの 1 つが apt-get によってインストールされている場合は、スクリプトが終了します。

リストされているすべてのパッケージがすでにインストールされている場合、スクリプトは終了しません。

があり、パッケージがインストールされた場合も同じことが起こりますapt-get upgrade。スクリプトは終了します。

動作すると思われる別のスクリプト セットがあります。そのシナリオでは、インストール スクリプトは単なるスタブであり、スクリプトをダウンロードして実行し、bash <scriptname>スクリプトを削除します。スクリプト自体は、sudo を実行して権限を昇格します。 apt-getここでは期待どおりに動作します。

apt-getスクリプトの終了を防ぐ方法についての知見があれば幸いです。

答え1

次のようなことはやめてほしいです。wget | bashこれは愚かな行為であり、ここで示したような意図しない効果をもたらします。bash があるので、その機能を活用してください。特に、プロセス置換:

bash <(wget -O - http://serverip/subfolder/script)

答え2

おそらく、apt-get標準入力を貪欲に読み取ることをやめる必要があるだけです。これを行うには、stdin を にリダイレクトします。これは/dev/null、読み取りに eof を返すファイルです。例:

apt-get -y --force-yes install ... </dev/null

関連情報