【问题标题】:Comparing two timezones比较两个时区
【发布时间】: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”

【问题讨论】:

标签: bash time timezone compare


【解决方案1】:

应该是:

if [[ "$TZ1" == "$TZ2" ]]

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多