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
: ).
설명하다
at
batch
표준 입력이나 지정된 파일에서 나중에 실행할 명령을 읽습니다 . 사용/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이에 대한 도움을 찾고 있습니다.