apt-get beendet das Bash-Skript nach der Installation von Paketen

apt-get beendet das Bash-Skript nach der Installation von Paketen

Ich habe die Antworten gelesen indieser Beitragaber es scheint bei meinem Problem nicht zu funktionieren.

Ich führe ein Bash-Skript über stdin von wget aus:

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

Ich habe versucht, zu verwenden apt-get -y --force-yes install <packages..> || true, aber das Skript wird trotzdem beendet, wenn eines der aufgelisteten Programme per apt-get installiert wird.

Das Skript wird nicht beendet, wenn alle aufgelisteten Pakete bereits installiert sind.

Das Gleiche passiert, wenn ich ein habe apt-get upgradeund es Pakete installiert. Das Skript wird beendet.

Ich habe einen anderen Satz von Skripten, der zu funktionieren scheint. In diesem Szenario ist das Installationsskript nur ein Stub, der das Skript herunterlädt, ausführt und bash <scriptname>dann löscht. Das Skript selbst erhöht seine Berechtigungen, indem es selbst sudo ausführt. apt-getfunktioniert hier wie erwartet.

apt-getIch bin für alle Tipps dankbar , wie sich die Beendigung des Skripts verhindern lässt .

Antwort1

Ich wünschte, die Leute würden damit aufhören: wget | bash. Es ist einfach albern und hat unbeabsichtigte Auswirkungen wie die hier. Sie haben Bash, also nutzen Sie seine Funktionen. Insbesondere die Prozesssubstitution:

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

Antwort2

Sie müssen wahrscheinlich nur aufhören, apt-getdie Standardeingabe gierig zu lesen. Tun Sie dies, indem Sie stdin auf umleiten /dev/null, eine Datei, die beim Lesen eof zurückgibt. Beispiel:

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

verwandte Informationen