我目前的任务是实现一个用于维护窗口的调度工具。
我想把输入的开始日期和结束日期转换成unix时间戳,需要实现从我的时区(欧洲/柏林)到UTC的转换。
我已经得到命令,在指定日期工作。为了测试的目的,我创建了一个小的脚本阅读输入(日期)从一个用户,我想转换的日期保存在该变量被转换,但我努力正确调用变量。
下面是小脚本的代码:
#!/bin/bash
read -p "Datum eingeben: " date
datum=$(date -d 'TZ="UTC" $date' +%s)
echo $datum
我尝试了不同的“报价”,试图正确地传递变量,但它要么被检测为命令,要么被检测为无效的日期。
当前错误消息为:
date:无效日期'TZ=“UTC”$date'
我试过把这段引文改成不同的样式,但都不管用。
试着给它一个给予的日期,这工作非常好。
1条答案
按热度按时间kq0g1dla1#
@Zimon,对评论的所有尊重,总结一下,我相信这会为你做好工作。
详情
_date
与date
命令不同。+%s
,在date
手册页中,它会根据您提供的日期和时间计算秒数“自1970-01-01 00:00:00 UTC以来的秒数”。因此,如果您仍然认为需要提及它,只需将TZ=UTC
添加到date
命令的左侧-因此它将仅针对该命令进行评估。奖励
如果你需要在双引号中包含一个参数,而你已经有了外部双引号,那么你可以用一个反斜杠
\
字符来转义内部双引号,如下所示:假设您需要
date -d "$date somthingElse="$value"" +%s
BASH中的当前语法将是
date -d "$date somthingElse=\"$value\"" +%s