Bashスクリプトのタイムスロット定義[閉じる]

Bashスクリプトのタイムスロット定義[閉じる]

真夜中に期間を定義する必要があります。スクリプトがトリガーされたら、時間が午後5時から午前8時までであることをテストする必要があります。コマンドはtrueの場合にのみ実行する必要があります。私は以下を試してみましたが、うまくいきましたが、深夜は過ぎませんでした。どのように実装するのか知っていますか?

#!bin/bash
hr=`date +%H%M`  
if test $hr -ge 1700 -a $hr -lt 0800  
then        
echo "success"

fi

答え1

午後5時から午前7時59分まで運営(午前8時を除く):

case $(date +%H) in
  (17|18|19|20|21|22|23|00|01|02|03|04|05|06|07) echo run;;
  (*) echo do not run;;
esac

...午前8時の時間範囲をすべて含めるには、最初のリストに8を含めます。dateコマンドに分を含める必要はありません。

答え2

私はあなたが何をしたいのか完全にはわかりませんが、私が見た問題の1つは、1700より大きく0800より小さいことができないため、ifステートメントは常にfalseを返すことです。or代わりに演算子を使用する必要がありますand

私が思いついた内容は次のとおりです。

#!/bin/bash
hr=$(date +%H%M)
if [[ $hr -ge "1700" || $hr -lt "0800" ]]; then
echo "success"
fi

関連情報