업데이트가 가능할 때 알림을 표시하는 스크립트 만들기

업데이트가 가능할 때 알림을 표시하는 스크립트 만들기

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

var1string 을 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

$를 사용하여 변수를 확장 해야 합니다 .

테스트를 사용할 때는 반드시 변수를 참조해야 합니다 [. 기술적으로 테스트에서는 필요하지 않지만 [[어쨌든 참조해야 합니다.

관련 정보