#!/bin/bash
startdate=2009-02-21
enddate=2009-11-30
var=$startdate
while true
do
echo $var
touch $var.txt
#it's line 9
[[ "10#$var" -ge "$enddate" ]] || break
var=$(date +%Y-%m-%d --date "$var +1 day")
done
它返回错误
line 9:value too great for base (error token is "08")
显然,错误出在表达式中10#,但是除了我已经尝试过的方法之外,我想不出如何写字符串的另一种方法。
您将整个日期作为数字表达式传递,因此2009-02-01被解释为2009-2-1,即2009-3 =2006。请尝试以下操作:
echo $(( 10#$var ))
但是以0开头的数字将被解释为八进制数字,但是2009年8月的08不能被解释为八进制数字,因为八进制数字中仅允许使用数字0-7。
也许您需要将日期作为字符串而不是数字表达式进行比较
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。