複数のシェルスクリプトが1時間以上続くかどうかはどうすればわかりますか?

複数のシェルスクリプトが1時間以上続くかどうかはどうすればわかりますか?

実行時間を確認して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

問題がどこにあるかを調べるのに役立つ人はいますか? if文で使用するものと使用するもの&&に違いはありますか?-aそれとも[]との使用の違いは何ですか()

ベストアンサー1

export BOOT_TIME=$(date +%s)
current=$(date +%s)
(( current - BOOT_TIME >3600 ))  && echo "More than an hour"

%s1970-01-01 00:00:00 UTC 以降の秒数を返します。

ディスカッション:蝋燭が良い理由

たとえば、開始(ブート)時間が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であると仮定します。ところで今回は微細なテストのため、上記の方法も動作しませんでした。

おすすめ記事