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
$
を使用して変数を拡張する必要があります。
テストを使用するときは必ず変数を参照してください[
。技術的にはテストでは必要ありませんが、[[
とにかく参照する必要があります。