开发者社区> 问答> 正文

使用包含10#的表达式获取语法错误

#!/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#,但是除了我已经尝试过的方法之外,我想不出如何写字符串的另一种方法。

展开
收起
祖安文状元 2020-01-16 17:46:32 506 0
1 条回答
写回答
取消 提交回答
  • 您将整个日期作为数字表达式传递,因此2009-02-01被解释为2009-2-1,即2009-3 =2006。请尝试以下操作:

    echo $(( 10#$var ))
    
    

    但是以0开头的数字将被解释为八进制数字,但是2009年8月的08不能被解释为八进制数字,因为八进制数字中仅允许使用数字0-7。

    也许您需要将日期作为字符串而不是数字表达式进行比较

    2020-01-16 17:46:40
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多