Нет причин запускать 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:'"
Ваш код выглядит неполным, вам не хватает закрывающего 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
Я вижу 2 проблемы:
rpm -qa
, действительно ли требуется аргумент? rpm -q
да. rpm ! -qa
, не работает, на оболочке ! rpm -qa
работает.