更新が可能なときに通知を表示するスクリプトの作成

更新が可能なときに通知を表示するスクリプトの作成

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

var1文字列を文字列と比較しています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

$を使用して変数を拡張する必要があります。

テストを使用するときは必ず変数を参照してください[。技術的にはテストでは必要ありませんが、[[とにかく参照する必要があります。

関連情報