23

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

这就是我所做的 -

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

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

date: invalid date `$1 day ago'

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

4

2 回答 2

29

如果在脚本上的此命令中将 ' 替换为 " ,它将起作用 -

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

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

date: invalid date `$1 day ago'

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

于 2013-08-05T14:08:16.970 回答
12

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

因此,说

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

或者

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

会工作。

于 2013-08-05T14:39:04.997 回答