Bash计算日期天数差:使用变量调用date命令报错求助
Bash变量引用错误原因及解决
- 问题根源:引用变量
$expiry时未加双引号,导致Shell将带空格的日期字符串拆分为多个独立参数。- 直接使用
--date "Oct 15 05:17:34 2023 GMT"时,引号让整个日期作为date命令的单个参数; - 使用
--date $expiry时,Shell会按空格拆分字符串,把Oct、15、05:17:34等内容分别传给date,date收到--date Oct后,后续的15就成了多余操作数,触发报错。
- 直接使用
- 解决方法:给变量加上双引号,确保整个日期字符串作为单个参数传递:
daysToExpiry=$((($(date +%s --date "$expiry")-$(date +%s))/(3600*24)))
- 新手提示:Bash中引用包含空格、特殊字符的变量时,务必用双引号包裹,避免意外分词,这是高频踩坑点。
内容的提问来源于stack exchange,提问作者kevinzf
相关产品推荐
相关产品推荐

