在 shell 脚本中将变量传递给 date 命令时出错

在 shell 脚本中将变量传递给 date 命令时出错

我正在尝试使用以下代码将 GMT 时间转换为 AEST 时间,并且工作正常。 date --date='TZ="GMT" 2017/07/24 12:00:00' "+%Y-%m-%d %H:%M:%S"

当我将日期变量作为参数传递给上面的查询时,如下所示:

RequestDate="2017/07/24 12:00:00"

date --date='TZ="GMT" ${RequestDate}' "+%Y-%m-%d %H:%M:%S".

我收到错误:

date: invalid date `TZ="GMT" ${RequestDate}`.

我尝试了单引号和双引号的多重封装。

答案1

如果将变量放在单引号字符串中,shell 不会扩展该变量。尝试:

$ TZ=GMT date --date "${RequestDate}" "+%Y-%m-%d %H:%M:%S"

答案2

shell 中有不同类型的引用,以及不同的可能解决方案。这其他答案是正确的,单引号中的值不会扩展。但是您希望 TZ 作为参数的一部分,并且您希望参数包含引号。您可以通过添加单引号中的部分和双引号中不带分隔符的部分来实现此目的。

date --date='TZ="GMT" '"${RequestDate}" "+%Y-%m-%d %H:%M:%S"

您还可以使用反斜杠

date --date="TZ=\"GMT\" ${RequestDate}" "+%Y-%m-%d %H:%M:%S"

相关内容