从脚本中的字符串获取纪元

Get epoch from string in script

我有一个 openvpn 状态文件,内容为:

OpenVPN STATISTICS
Updated,Tue Nov  5 16:45:50 2019
...

我想在我的脚本中解析更新时间,以了解 vpn 是否开启。

这是我的脚本:

#!/usr/bin/env bash

logDate=$(sudo cat /home/ubuntu/vpn/openvpn-status.log | grep Update| awk -F "," '{print }') 

logEpoch=$(date -d $logDate +"%s")

当我在终端中 运行 相同的命令时,它工作正常,但是当我 运行 脚本时它给我一个错误:

date: extra operand ‘5’
Try 'date --help' for more information.

我认为您在使用变量时需要添加引号。 该脚本适用于:

#!/usr/bin/env bash

logDate=$(sudo cat /home/ubuntu/vpn/openvpn-status.log | grep Update| awk -F "," '{print }') 

logEpoch=$(date -d "$logDate" +"%s")
echo "$logEpoch"

解释在这里:mywiki.wooledge.org/Quotes – @Ed Morton