使用参数变量在bash脚本中获取X天前的日期

时间:2013-08-05 14:04:56

标签: bash date arguments

我正在尝试使用bash脚本计算动态天数的日期。

这就是我所做的 -

#!/bin/bash
STAMP=`date --date='$1 day ago' +%y%m%d`

但在运行myscript 2时,它会说 -

date: invalid date `$1 day ago'

如何在此公式中使用我的参数值?

2 个答案:

答案 0 :(得分:16)

如果在脚本中将此命令“替换为”,则可以正常工作 -

STAMP=`date --date="$1 day ago" +%y%m%d`

线索是错误响应中使用的两个不同的字符`和' -

date: invalid date `$1 day ago'

bash脚本编写专家(不是我)可以解释为什么会发生这种情况。

答案 1 :(得分:7)

这是因为变量替换不会在单引号中发生,即'$1'不会扩展但"$1"会扩展。

因此,说

STAMP=`date --date="$1 day ago" +%y%m%d`

STAMP=$(date --date="$1 day ago" +%y%m%d)

会起作用。