Я относительно новичок в Linux в целом, все еще учусь:)
Я хочу написать bash-скрипт для автоматизации apt update
и apt upgrade
. У меня есть идея отправить команду apt update
, а затем просмотреть строки для конкретных слов.
Например, после того, как apt update
было сделано, он говорит:
Reading state information... Done
89 packages can be upgraded.
Так что в этом случае я хочу искать can be upgraded
. Если эти слова находятся в выводе, скрипт должен выполнить apt upgrade -y
.
Любая помощь высоко ценится. Заранее спасибо.
Существует этот инструмент /usr/lib/update-notifier/apt-check
дающий простой вывод.
Эти --human-readable
флаг дает больше информации.
Короче говоря, /usr/lib/update-notifier/apt-check --human-readable
дает два числа:
<n1> packages can be updated.
<n2> updates are security updates.
/usr/lib/update-notifier/apt-check
без опции имеет это выходное расположение:
<n1>;<n1>
, Таким образом, возможно извлечь первое число и если это больше, чем 0, скажите, что некоторое обновление доступно.
Извлечение первое число, количество доступных обновлений:
/usr/lib/update-notifier/apt-check |& cut -d";" -f 1
Использование это в сценарии:
#!/bin/bash
if [ $(/usr/lib/update-notifier/apt-check |& cut -d";" -f 1) -gt 0 ]; then
# Some commands
sudo apt-get -y dist-upgrade
fi
На практике Вы не заботитесь... Просто выполненный
apt update
apt upgrade
в последовательности, если нет ничего для обновления, ничего не произойдет. Это - сценарий, и это - компьютер, делающий работу, выполнение apt upgrade
не собирается брать много ЦП.
единственные тесты, которые стоит сделать вот, - то, что apt-update
и apt-upgrade
работал правильно (никакие сетевые ошибки, нет полуустанавливал/неправильно конфигурировал пакеты).