Вы можете просто использовать command -v
, чтобы проверить, установлен ли он, код возврата в условии if поможет вам установить, если он не уже установлен
apt-get update
programs=(bc nmap coreutils xmlstarlet)
for program in "${programs[@]}"; do
if ! command -v "$program" > /dev/null 2>&1; then
apt-get install "$program" -y
fi
done
Опция command -v
соответствует стандарту POSIX. Вы можете запустить apt-get update
только один раз, а не для каждой итерации цикла. Также вы определили programs
как переменную, которая должна была быть массивом для итерации.