Ich habe eine einfache Anforderung. Ich möchte mehrere Variablen definieren, die einer beliebigen Anzahl von Paketen entsprechen, die ich über ein Shell-Skript installieren möchte.
Beispielcode unten:
MISC="shutter pidgin"
WEB="apache2 mongodb"
for pkg in $MISC $WEB; do
if [ "dpkg-query -W $pkg | awk {'print $1'} = """ ]; then
echo -e "$pkg is already installed"
else
apt-get -qq install $pkg
echo "Successfully installed $pkg"
fi
done
Alles funktioniert ein bisschen, aber die Logik scheint fehlerhaft zu sein, weil sie die gewünschten Pakete nicht zuverlässig installiert. Entweder heißt es, dass sie bereits installiert wurden, oder es wird versucht, Pakete zu installieren, die bereits zuvor installiert wurden.
Ich habe auch versucht mit command -voder die folgenden:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
Und selbst mit den Flags -nund kann -zman prüfen, ob der zurückgegebene String leer war. Ich bin mir ziemlich sicher, dass mir hier ein guter Sinn fehlt.
Haben Sie eine Idee, was ich tun könnte, um sicherzustellen, dass ein Paket tatsächlich installiert ist oder nicht?
Vielen Dank!
apt-get installinstallierte Pakete anfordern? Sie könnten einfach anrufenapt-get install $MISC $WEB.