我正在尝试通过 bash 脚本检查时钟是否同步。
所以首先我执行了timedatectl输出以下内容的命令:
Local time: Mi 2021-03-17 12:52:53 CET
Universal time: Mi 2021-03-17 11:52:53 UTC
RTC time: Mi 2021-03-17 11:52:53
Time zone: Europe/Berlin (CET, +0100)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Run Code Online (Sandbox Code Playgroud)
因此我们的目标是获得的价值System clock synchronized是yes,它分配给一个变量并打印。因此我做了以下工作:
1-# check if time synchronized
2-syncTime="$(timedatectl | grep 'System clock')" # returns the whole line
3-echo "$syncTime"# make sure the line is saved
4-ifTimeSynched="$( $syncTime | grep -oP 'synchronized: \K\w+')" # this supposes to save the word
after synchronized:
echo "$ifTimeSynched"
Run Code Online (Sandbox Code Playgroud)
第 4 行应该得到单词旁边的单词synchronized: 在这种情况下是yes但是,当我$ifTimeSynched如上所示打印时,它返回空行。
它没有抓住这个词的任何理由yes?
预先感谢
使用awk. 您需要System clock synchronized在命令的输出中搜索字符串timedatectl(作为输入传递给awk命令)并打印所需的列(字段),这是您案例中的最后一个字段。
ifTimeSynched=$(timedatectl | awk '/System clock synchronized/{print $NF}')
echo "$ifTimeSynched"
Run Code Online (Sandbox Code Playgroud)