私は答えを読みましたこの郵便受けしかし、私の問題には効果がないようです。
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