如何在脚本中使用设置的时区调用日期命令中的变量

问题描述 投票:0回答:2

我当前的任务是实现一个用于维护窗口的调度工具。

我想将输入的开始日期和结束日期转换为unix时间戳,并且需要实现从我的时区(欧洲/柏林)到UTC的转换。

当给出设定的日期时,我已经得到了可以工作的命令。出于测试目的,我创建了一个小脚本,读取用户的输入(日期),我想转换该变量中保存的日期进行转换,但我很难正确调用该变量。

这是小脚本的代码:

#!/bin/bash


read -p "Datum eingeben: " date

datum=$(date -d 'TZ="UTC" $date' +%s)
echo $datum

我尝试了不同的“引用”,试图正确传递变量,但它要么被检测为命令,要么被检测为无效日期。

当前错误消息是:

日期:无效日期 ‘TZ="UTC" $date’

我尝试将引文更改为不同的样式,但没有任何效果。

尝试给它一个设定的日期,效果非常好。

bash shell
2个回答
1
投票

@Zimon,尊重评论并总结一下,我相信这会为您完成工作。

详情

  • 虽然它有效,但我建议使用用户定义的变量名称以避免混淆,例如
    _date
    date
    命令不同。
  • 由于您正在使用
    +%s
    并从
    date
    手册页中,它会根据您提供的日期和时间计算“自 1970-01-01 00:00:00 UTC 以来的秒数”。因此,如果您仍然认为需要提及它,只需将
    TZ=UTC
    添加到
    date
    命令的左侧 - 这样它将仅针对该命令进行评估。
#!/bin/bash

read -p "Datum eingeben: " _date

datum=$(TZ='UTC' date -d "$_date" +%s)

echo $datum

奖金

如果您需要在已经有外部双引号的情况下在双引号中包含参数,则可以通过反斜杠

\
字符转义内部双引号,如下所示:

假设你需要

date -d "$date somthingElse="$value"" +%s

BASH 中的当前语法是

date -d "$date somthingElse=\"$value\"" +%s


0
投票

我不确定这里是否真的有问题需要回答。然后泽蒙似乎回答了他自己的问题,他说:“试图给它一个设定的日期,效果非常好。”我知道我们应该避免回复其他答案,但 UTC(协调世界时)不是时区。这是用于在全球范围内建立时区的标准。

© www.soinside.com 2019 - 2024. All rights reserved.