将变量设置为 bash 脚本中命令的输出

Set a variable to the output of a command in a bsh script

运行 具有 UTC 时间的系统我希望能够使用本地时间写入日志文件,以便稍后阅读它们并确定外部因素对问题的影响需要更少的脑力劳动。

UTC 运行 时获取本地日期(例如澳大利亚悉尼)的命令是

TZ=Australia/Sydney date

这会 return

Sat 15 Sep 17:19:28 AEST 2018

下面是我的脚本示例。现在,请忽略这样一个事实,即它不是它似乎正在尝试完成的工作的最佳脚本。我的问题是时间被记录在日志文件中。这个脚本在每个循环中所做的是将相同的 date/time 写入日志文件 - 脚本启动时的本地时间。

#!/bin/sh
localdatetime=$(TZ=Australia/Sydney date)

while
  do
    nc -zw5 192.168.0.199     # IP of router
    if [[ $? -eq 0 ]]; then
      status="up"
    else
      status="down"
    fi
  echo "$localdatetime The router is now $status" >> /home/pi/userX/routerStatus.log
  sleep 10
done

我想要的是将当前本地时间存储到每个循环的日志文件中,这样我就可以通过读取日志文件知道路由器何时启动或关闭。有没有办法使用变量来做到这一点?

在此先感谢您提供任何好的建议。

我最后所做的是显而易见的解决方案:在尝试将其写入日志文件之前立即更新本地时间变量。

例如:

#!/bin/sh

while
  do
    nc -zw5 192.168.0.199     # IP of router
    if [[ $? -eq 0 ]]; then
      status="up"
    else
      status="down"
    fi
  localdatetime=$(TZ=Australia/Sydney date)
  echo "$localdatetime The router is now $status" >> /home/pi/userX/routerStatus.log
  sleep 10
done