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

私がテストした2つのプラットフォームには、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/shDebian ではシンボリックリンクです/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/shdashあなたの場合)。shellcheck.netこれについての助けを探しています。

おすすめ記事