実行時間を確認しようとしていますが、1時間以上かかるとエラーが返されますが、コードは断続的に誤検知を返します。 firstRun.sh
内 、私は時間を次のように読みます:
export START_H=`date +%H`
export START_M=`date +%m`
およびsecondRun.sh
次のように時間を確認します:
CURRENT_H=`date +%H`
CURRENT_M=`date +%M`
TIME=`expr $CURRENT_H - $START_H`
if [ $TIME -gt 0 ] && [ $START_M -lt $CURRENT_M ]; then
echo "boot time is more than an hour"
fi
誰かが問題がどこにあるかを見つけるのを手伝ってもらえますか? &&
の使用に違いはありますか? および-a
ifステートメントで?または、[]
の使用の違い および()
?
承認された回答:
export BOOT_TIME=$(date +%s)
current=$(date +%s)
(( current - BOOT_TIME >3600 )) && echo "More than an hour"
%s
1970-01-0100:00:00UTCからの秒数を返します。
ディスカッション:秒が優れている理由
たとえば、開始(ブート)時刻が23:00で、現在の時刻が00:23であるとします。次に、$TIME
負であり、これは機能しません:
if [ $TIME -gt 0 ] && [ $START_M -lt $CURRENT_M ]; then
echo "boot time is more than an hour"
fi
同様に、開始時刻が12:03で、現在時刻が14:00であるとします。次に、今回は分のテストのため、上記も機能しません。