在我的脚本中,以下代码成功生成 $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'
反而。