我有以下shell脚本:
prodStartTime="213000"
prodEndTime="235959"
currentTime=`date +"%H%M%S"`
if [[ ${currentTime} -ge ${prodStartTime#0} && ${currentTime} -le ${prodEndTime#0} ]];
then
echo "Something .........."
else
echo "Else part Something .........."
fi 获取误差
“第5行: prodStartTime: 043058:对基值太大(错误标记为"043058")"”
当8或9小时或分钟内出现此错误时会发生此错误。
示例:
(错误标记为"043058")
(错误标记为"043059")
(错误标记为"043850")
(错误标记为"043901")
发布于 2016-12-23 19:01:30
我认为最简单和最清晰的解决方法是使用字符串比较,而不是数字比较:
prodStartTime=213000
prodEndTime=235959
currentTime="$(date +%H%M%S)"
if [[ $currentTime > $prodStartTime && $currentTime < $prodEndTime ]] ; then
echo "Something .........."
else
echo "Else part Something .........."
fi发布于 2016-12-23 07:22:18
这是因为带前导零的时间字符串被解释为八进制数,而不是十进制。
要防止这种情况发生,请以这样的方式更改日期分配,如果有的话,删除前导零:
currentTime=`date +"%-H%M%S"`在date中阅读更多关于零填充的内容:从日期中移除前导零
发布于 2016-12-23 18:40:38
https://stackoverflow.com/questions/41295574
复制相似问题