如何在命令行及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
相关产品推荐
相关产品推荐

