You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本报错:arithmetic expression: expecting EOF: "09112022" 求助

解决Bash脚本日期校验的算术表达式错误

问题原因

报错的核心原因是:date +'%d%m%Y'输出的日期字符串如果以0开头(比如日为09、月为09时),Bash在执行算术运算$((...))时,会将以0开头的数字默认解析为八进制数,但八进制的有效数字只有0-7,包含9的数字会触发语法错误,这就是你看到arithmetic expression: expecting EOF: " 09112022 "的原因。

解决方案

方案1:直接字符串对比(推荐)

因为日期格式是固定的ddmmyyyy,直接对比字符串完全能满足校验需求,不需要多余的算术转换,代码更简洁高效:

q2(){
    today_now=$(date +'%d%m%Y')
    echo "$today_now"
    read x
    if [[ "$today_now" == "$x" ]]
    then 
        echo "valid" 
    else
        echo "invalid"
    fi
}

方案2:强制十进制解析(保留算术运算场景)

如果一定要用算术比较,可在变量前添加10#,强制Bash按十进制解析数字,避免八进制解析错误:

q2(){
    today_now=$(date +'%d%m%Y')
    echo "$today_now"
    a=$((10#$today_now))
    read x
    b=$((10#$x))
    if [[ "$a" -eq "$b" ]]
    then 
        echo "valid" 
    else
        echo "invalid"
    fi
}

内容的提问来源于stack exchange,提问作者manish chary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:25:19