我对 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
。
非常感谢您的帮助。提前致谢。
答案1
这个工具/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
答案2
实际上你不必关心...只需运行
apt update
apt upgrade
依次类推,如果没有什么可升级的,什么都不会发生。这是一个脚本,这是计算机在执行工作,运行时apt upgrade
不会占用太多 CPU。
这里唯一值得做的测试是并且apt-update
正常apt-upgrade
运行(没有网络错误,没有半安装/配置错误的包)。