проверка наличия пакета rpm в массиве

Нет причин запускать grepудаленно.

plink -batch user@192.168.91.12 -P 22 -pw test@123 free | grep "Mem:"

Обратите внимание, что вы не должны давать команду plinkвнутри подоболочки, (... ).

Я ничего не знаю о Windows cmd.exe, но вы также можете попробовать

plink -batch user@192.168.91.12 -P 22 -pw test@123 sh -c "free | grep 'Mem:'"
0
17.03.2020, 15:51
2 ответа

Ваш код выглядит неполным, вам не хватает закрывающего doneцикла for. Если предложение ifнаходится в вашем цикле, команды exitзаставят весь скрипт остановиться (, поскольку у вас есть это с обеих сторон else, он всегда будет останавливаться после первого элемента.)

Подобное взаимодействие с массивом, вероятно, сработает, но есть и более простые способы. Например (не проверено):

echo "Checking for Pre-requisites X11 libraries required for installation"
my_array=(xorg-x11-drivers xorg-x11-utils xorg-x11-xauth xorg-x11-xinit initial-setup-gui initial-setup-gui install initial-setup-gui glx-utils )
missing=()

for package in "${my_array[@])"; do
  rpm -q "${package}" || missing+=("${package}")
done

if [ ${#missing[@]} -gt 0 ] ; then
  echo "Packages missing: ${missing[@]}"
  exit 1
else
  echo "All Packages available"
  exit
fi
0
28.04.2021, 23:20

Я вижу 2 проблемы:

  1. rpm -qa, действительно ли требуется аргумент? rpm -qда.
  2. rpm ! -qa, не работает, на оболочке ! rpm -qaработает.
1
28.04.2021, 23:20

Теги

Похожие вопросы