実行時間を確認して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"
%s
1970-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であると仮定します。ところで今回は微細なテストのため、上記の方法も動作しませんでした。