Если вы хотите выйти из скрипта только при отсутствии какой-либо команды:
require() {
local command not_found
for command; do
if ! command -v -- "${command}" > /dev/null 2>&1; then
printf 'ERROR: Command not found: %s\n' "${command}" >&2
((not_found++))
fi
done
if ((not_found > 0)); then
printf 'ERROR: Missing commands: %d\n' "${not_found}"
exit 1
fi
}
Но если вы также хотите установить недостающие команды:
install_command_if_not_found() {
local command commands not_found
for command; do
if ! command -v -- "${command}" > /dev/null 2>&1; then
commands+=("${command}")
((not_found++))
fi
done
if ((not_found > 0)); then
sudo apt-get update
sudo apt-get install -y -- "${commands[@]}"
fi
}
Пример:
$ require cat foo curl bar mpv baz zenity
ERROR: Command not found: foo
ERROR: Command not found: bar
ERROR: Command not found: baz
ERROR: Missing commands: 3
Примечания:
Настройте задание root cron , после чего сценарий все равно будет запускаться от имени пользователя root. Чтобы получить доступ к корневому crontab, запустите sudo crontab -e
.