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

如何在命令行及Shell脚本中传递日期参数?

Shell脚本传递日期参数与变量赋值的可行方案

一、命令行直接传递计算后的日期参数

你之前的写法是把date命令本身作为参数传给脚本,但Shell不会自动执行这个命令,必须用命令替换($() 或反引号 `)让Shell先执行date命令,把输出结果作为参数传递。

正确执行命令:

./MoneyCalculator.sh $(date +"%Y-%m-%d" -d "-10 days") $(date +"%Y-%m-%d" -d "-1 days")

也可以用反引号写法(兼容性稍差,更推荐$()):

./MoneyCalculator.sh `date +"%Y-%m-%d" -d "-10 days"` `date +"%Y-%m-%d" -d "-1 days"`

执行后,脚本里可以通过$1获取过去10天的日期,$2获取过去1天的日期。

二、脚本内部将计算后的日期赋值给变量

你的变量赋值写法缺少命令替换,导致Shell把date当成变量名的一部分,自然会失败。正确的赋值方式需要用命令替换让Shell执行date命令,把结果赋值给变量:

# 推荐写法
moneyDate=$(date +"%Y-%m-%d" -d "-10 days")
# 兼容旧版本Shell的写法
moneyDate=`date +"%Y-%m-%d" -d "-10 days"`

赋值后可以用echo $moneyDate验证是否正确拿到了目标日期。

三、脚本接收参数的简单示例

如果你的MoneyCalculator.sh需要处理传入的日期,参考以下示例:

#!/bin/bash
# 检查参数数量是否正确
if [ $# -ne 2 ]; then
    echo "用法:./MoneyCalculator.sh 起始日期 结束日期"
    exit 1
fi

start_date=$1
end_date=$2

echo "正在计算 $start_date 至 $end_date 的数据..."
# 这里添加你的业务计算逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:42:10