我正在尝试检查运行时间,如果超过一个小时返回错误,但代码间歇性地返回误报。在firstRun.sh,我读时间为:
export START_H=`date +%H`
export START_M=`date +%m`
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
谁能帮我找出问题出在哪里?using&&和-ain if 语句之间有什么区别吗?或者 using[]和之间有什么区别()?
export BOOT_TIME=$(date +%s)
current=$(date +%s)
(( current - BOOT_TIME >3600 )) && echo "More than an hour"
Run Code Online (Sandbox Code Playgroud)
%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
Run Code Online (Sandbox Code Playgroud)
同理,假设开始时间是12:03,当前时间是14:00。然后,以上也不起作用,这次是因为分钟测试。