【发布时间】:2020-02-13 23:02:46
【问题描述】:
背景:我所在的团队负责将软件部署到 30 多个不同时区的服务器上。每个服务器位置都有自己的维护窗口。我们的 SysAd 团队位于 5 个不同的地点。目前,我们使用带有服务器位置表和谷歌时间转换链接的内部 wiki 页面,如this。所以我们维护窗口的内部 wiki 页面充满了服务器的时区,如果它们遵循 DST 偏移量,然后是开始时间的转换链接和维护窗口的end time 的另一个谷歌转换链接。跟踪可以立即修补哪些服务器非常耗时。由于某些服务器与其他服务器位于同一时区,但可能不遵循 DST 或不遵循跟踪是一团糟。一些工作中的软件开发人员保留了所有转换链接的完整书签文件夹,我想向他们发送一个可以简化此操作的脚本。
目标:我基本上希望脚本能够将 SysAds 当前时区与不同服务器的时区进行比较。最后,我想要一个回显语句,说明现在可以修补哪个服务器,最终我想稍后添加进一步的逻辑,以评估下一个维护窗口和服务器位置的时间。
问题 #1:我是脚本新手。 问题#2:当做我认为是简单的 TZ 比较时,它没有输出我期望的结果。我觉得一旦我理解了为什么下面的输出是这样的,我想我可以弄清楚其余的逻辑。在这一点上,我不一定关心特定的小时和分钟。只是为什么 If 语句不输出“相同”。
所需的脚本:
#!/bin/bash
##SysAd Sets his own timezone in the first TZ variable.
export TZ=America/Los_Angeles
TZ1=`date +%::z`
echo $TZ1
##Timezone of Server in location 1
TZ=America/Los_Angeles
TZ2=`date +%::z`
echo $TZ2
if [[ " TZ1 " == " TZ2 " ]]; then
echo "the same"
else
echo "not the same"
输出:
% ./test.sh
-08:00:00
-08:00:00
not the same
预期的输出是它们是相同的。回显 TZ1 和 TZ2 变量都是“-08:00:00”
【问题讨论】:
-
if [[ " $TZ1 " == " $TZ2 " ]]; then。这些是变量,必须扩展。您正在比较字符串 TZ1 和 TZ2,它们并不相同。 -
我认为其他人已经解决了你的 bash 问题,所以我将提供一些关于时区的意见和建议:1)观看this youtube video about time zones。 2) 了解the IANA time zone database。 3) 阅读the DST tag wiki。 4) 阅读the time zone tag wiki。 5) 使用timeanddate.com 上的工具,例如the converter,而不是谷歌搜索。
标签: bash time timezone compare