我当前的任务是实现一个用于维护窗口的调度工具。
我想将输入的开始日期和结束日期转换为unix时间戳,并且需要实现从我的时区(欧洲/柏林)到UTC的转换。
当给出设定的日期时,我已经得到了可以工作的命令。出于测试目的,我创建了一个小脚本,读取用户的输入(日期),我想转换该变量中保存的日期进行转换,但我很难正确调用该变量。
这是小脚本的代码:
#!/bin/bash
read -p "Datum eingeben: " date
datum=$(date -d 'TZ="UTC" $date' +%s)
echo $datum
我尝试了不同的“引用”,试图正确传递变量,但它要么被检测为命令,要么被检测为无效日期。
当前错误消息是:
日期:无效日期 ‘TZ="UTC" $date’
我尝试将引文更改为不同的样式,但没有任何效果。
尝试给它一个设定的日期,效果非常好。
@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
我不确定这里是否真的有问题需要回答。然后泽蒙似乎回答了他自己的问题,他说:“试图给它一个设定的日期,效果非常好。”我知道我们应该避免回复其他答案,但 UTC(协调世界时)不是时区。这是用于在全球范围内建立时区的标准。