У мене проста вимога. Я хочу визначити кілька змінних, які відповідатимуть будь-якій кількості заданих пакетів, які я хочу встановити за допомогою сценарію оболонки.
Приклад коду нижче:
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
Все начебто працює, але логіка здається хибною, оскільки це не надійно встановити потрібні мені пакунки. Він або говорить, що вони вже встановлені, або він намагається встановити пакети, які вже були встановлені раніше.
Я також намагався з command -vчи наступним:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
І навіть за допомогою -nі -zпрапорів, щоб перевірити, чи повернута рядок порожня. Цілком впевнений, що мені тут не вистачає хорошого сенсу.
Чи маєте ви якесь уявлення, що я міг би зробити, щоб переконатися, що пакет фактично встановлений чи ні?
Спасибі!
apt-get installна встановлені пакети? Ви могли просто зателефонуватиapt-get install $MISC $WEB.