At 명령은 실제로 실행되지 않습니다.

At 명령은 실제로 실행되지 않습니다.

at 명령을 설정하는 데 사용한 코드는 여기에서 찾을 수 있습니다.

at -f noti.sh -t ${sleepTimes[$i]}

성공적인 사용을 사용하여 나열된 위치를 볼 수 있으므로 타이밍이 잘 작동합니다 atq.

noti.sh 파일은 at 명령이 사용된 동일한 디렉토리에 있으며 다음을 포함합니다.

if [[ "$OSTYPE" == "linux-gnu" ]]; then
    notify-send "Insomnia" "Time to take a rest"  -u critical -t 7000 -i sleep.ico
elif [[ "$OSTYPE" == "darwin"* ]]; then
    terminal-notifier -title "Insomnia" -message "Time to take a rest"  -sound "default"  -group rest -timeout 7 -appIcon sleep.png
fi

제가 테스트한 두 플랫폼에는 Terminal Notifier와 알림 전달이 모두 설치되어 있습니다. 함수가 제대로 실행되지 않는 이유는 무엇입니까(알림 버블 표시)?

답변1

귀하의 질문은 다음과 같을 수 있습니다(출처 man at: ).

설명하다

atbatch표준 입력이나 지정된 파일에서 나중에 실행할 명령을 읽습니다 . 사용/bin/sh.

또한 실행하면 at -f noti.sh -t 2...다음과 같은 경고가 출력됩니다.

warning: commands will be executed using /bin/sh
job 4 at Mon May  8 13:51:00 2017

/bin/sh데비안에서는 심볼릭 링크입니다 /bin/dash. 내 생각 bash엔 당신이 스크립트를 테스트한 것 같아요 .POSIX 정의되지 않은 기능즉, 에서는 작동하지 않거나 dash일반적으로 에서는 작동하지 않습니다 /bin/sh.

귀하의 특정 경우에 문제는 [[ ]]OSTYPE가 지원되지 않는다는 것입니다 dash. 달리기를 해보세요

$ sh noti.sh 

다음 오류가 반환됩니다.

noti.sh: 2: noti.sh: [[: not found
noti.sh: 4: noti.sh: [[: not found

그러나 스크립트를 실행하면 bash필요에 따라 적합할 수 있습니다.

예상대로 스크립트를 실행하려면 호환 가능하도록 다시 작성해야 할 수도 있습니다 /bin/sh( dash귀하의 경우).shellcheck.net이에 대한 도움을 찾고 있습니다.

관련 정보