【问题标题】:Get epoch from string in script从脚本中的字符串获取纪元
【发布时间】:2020-03-02 08:07:18
【问题描述】:

我有一个带有内容的 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 $2}') 

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

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

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

【问题讨论】:

  • 可能有更好的方法来做到这一点。激活时,vpn 应该在您的路由表中有一个条目。当 vpn 启动时尝试netstat -anr,然后在未启动时再次尝试。我没有运行 OpenVPN,否则我会检查
  • 引用你的变量。
  • grep foo | awk '{print}' 是一种反模式。请改用awk '/foo/{print}'。也谷歌 UUOC。
  • 尝试以这种方式更改datedate -d "$logDate" +"%s"

标签: bash shell awk terminal epoch


【解决方案1】:

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

#!/usr/bin/env bash

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2012-12-28
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2015-08-06
    相关资源
    最近更新 更多