创建一个脚本以在有可用更新时显示通知

创建一个脚本以在有可用更新时显示通知

我正在尝试创建一个与 crontab 一起运行的脚本,如果有任何更新可用,该脚本将发送通知。脚本本身没有给我任何错误,但是在 if 语句中只有“else”部分起作用。有任何想法吗?

#!/bin/bash
sudo apt update > ~/Desktop/UpdateInfo

update1=$(grep "package can be upgraded" ~/Desktop/UpdateInfo | cut -d' ' -f2,3,4,5)

var1="package can be upgraded."

if [ var1 = update1 ]
    then
        notify-send "Updates are available"
    else
        notify-send "test"
fi

答案1

您正在将 stringvar1与 string进行比较update1。这些永远不会一样。您想要比较变量:

if [ "$var1" = "$update1" ]

当然,整个事情可以简化为:

sudo apt update | grep -q "package can be upgraded" && notify-send "Updates are available"

答案2

在基于 Debian 的发行版上,您可以使用pk-update-icon包裹:

显示更新通知托盘图标

当软件包更新可用时,这个小工具会在面板的托盘区域中显示通知和图标。它主要是为尚未集成此功能的桌面而设计的,例如 Xfce。

apt install pk-update-icon

安排一个 cron 作业(短暂的延迟用于测试建议。)例如:

crontab -e

过去以下行:

*/1 * * * *  export DISPLAY=:0 ; /usr/bin/pk-update-icon -d 5 ; sleep 5 ; pkill pk-update-icon

答案3

您有一些代码错误:

#!/bin/bash
sudo apt update > ~/Desktop/UpdateInfo

update1=$(grep "package can be upgraded" ~/Desktop/UpdateInfo | cut -d' ' -f2,3,4,5)

var1="package can be upgraded."

if [[ "$var1" == "$update1" ]]; then
    notify-send "Updates are available"
else
    notify-send "test"
fi

您需要使用$来扩展您的变量。

使用测试时您绝对需要引用变量[。从技术上讲,测试中不需要它[[,但无论如何您都应该引用。

相关内容