将日期变量输入日期计算代码的正确语法

将日期变量输入日期计算代码的正确语法

在我的脚本中,以下代码成功生成 $n 的时间戳变量,格式为 2016-04-28T15:47:48

for n in $(perl parsetime.pl | sed "s/.....$//")

do
echo $n

结果是:

2016-04-28T15:47:48

但是,我现在想使用这个变量来计算 15 分钟前的时间。其他人向我提供了以正确格式生成时间戳的语法(有效) - 这是通过以下方式实现的:

/opt/bin/date --date '-15 minutes 2016-04-28T15:39:27' "+%Y-%m-%dT%H:%I:%S"

结果是:

2016-04-28T09:09:27

但是,我现在的问题是,当我尝试使用 $n 变量而不是写出实际时间戳时,我收到这样的消息,我收到一条错误消息。

for n in $(perl parsetime.pl | sed "s/.....$//")

do

/opt/bin/date --date '-15 minutes "$n"' "+%Y-%m-%dT%H:%I:%S" 

结果:

/opt/bin/date: invalid date `-15 minutes "$n"

我究竟做错了什么?如何将 $n 变量正确地合并到代码中?

答案1

问题就在这里:

'-15 minutes "$n"'

单引号停止变量替换,因此您实际上是"$n"在传递而不是变量的内容。

写:

/opt/bin/date --date "-15 minutes $n" '+%Y-%m-%dT%H:%I:%S'

反而。

相关内容