Bash shell脚本中的if条件-错误标记-日期输出中的数字8和9
我有以下shell脚本:Bash shell脚本中的if条件-错误标记-日期输出中的数字8和9,bash,shell,unix,Bash,Shell,Unix,我有以下shell脚本: prodStartTime="213000" prodEndTime="235959" currentTime=`date +"%H%M%S"` if [[ ${currentTime} -ge ${prodStartTime#0} && ${currentTime} -le ${prodEndTime#0} ]]; then echo "Something .........." else echo "El
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”)能否更改其中一个
currentTime=`date +"%k%M%S"`
或
工作日期:
%k小时,空间填充(0..23);与%\u H相同
%小时(00..23)这是因为前导零的时间字符串被解释为八进制数而不是十进制数 为防止出现这种情况,请通过以下方式更改日期分配,即去掉前导零(如果有的话):
currentTime=`date +"%-H%M%S"`
在
date
中阅读有关零填充的更多信息,请点击此处:只需确保Bash理解以10为基数的数字,如下所示:
currentTime=$(( 10#$(date +"%H%M%S") ))
10#
前缀强制基数为10。参见。我认为最简单、最清晰的解决方法是使用字符串比较,而不是数字比较:
prodStartTime=213000
prodEndTime=235959
currentTime="$(date +%H%M%S)"
if [[ $currentTime > $prodStartTime && $currentTime < $prodEndTime ]] ; then
echo "Something .........."
else
echo "Else part Something .........."
fi
prodStartTime=213000
prodEndTime=235959
currentTime=“$(日期+%H%M%S)”
如果[[$currentTime>$prodStartTime&$currentTime<$prodEndTime]];然后
呼应“某物……”
其他的
呼应“其他部分……”
fi
您使用的是哪个平台?对我来说很好,你是如何运行脚本的?linux平台。自动cron作业。。如果我手动运行获取错误\./a.sh抱歉输入错误。/a.sh请注意,您的错误消息与发布的代码不一致productStartTime
不是以0开头的,虽然currentTime
可能是。但是今晚午夜8分钟后同样的问题会发生!同样的问题将在今晚午夜8分发生!
prodStartTime=213000
prodEndTime=235959
currentTime="$(date +%H%M%S)"
if [[ $currentTime > $prodStartTime && $currentTime < $prodEndTime ]] ; then
echo "Something .........."
else
echo "Else part Something .........."
fi