Ho un semplice requisito. Voglio definire diverse variabili che corrisponderanno a qualsiasi numero di pacchetti dati che voglio installare tramite uno script di shell.
Codice di esempio di seguito:
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
Tutto funziona, ma la logica sembra imperfetta perché non sta installando in modo affidabile i pacchetti che voglio. Indica che sono già stati installati o sta tentando di installare pacchetti che sono già stati installati in precedenza.
Ho anche provato con command -vo il seguente:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
E anche con i flag -ne -zper verificare se la stringa restituita era vuota. Abbastanza sicuro che mi manchi un po 'di buon senso qui.
Hai idea di cosa potrei fare per assicurarmi che un pacchetto sia effettivamente installato o no?
Grazie!
apt-get installrichiedi anche i pacchetti installati? Potresti semplicemente chiamareapt-get install $MISC $WEB.