【问题标题】:storing output of a mathematical expression存储数学表达式的输出
【发布时间】:2019-04-23 23:05:17
【问题描述】:

我是 SunOS unix 系统的新手。我想存储正常运行时间并将其转换为 shell 脚本中的分钟数。 以下是我在脚本中使用的内容。

hrs=`uptime | awk '{print \$5}' | sed 's/[:,]/ /g' | awk '{print \$1}'`
mins=`uptime | awk '{print \$5}' | sed 's/[:,]/ /g' | awk '{print \$2}'`
uptimesecs=$(($mins*60)))

我在脚本中得到的错误。

谁能帮我看看语法

【问题讨论】:

  • awk 可以单独解析和计算。你不需要解析它两次。还有x days你可能要考虑。
  • uptime 的值是多少?也许它取决于语言环境。
  • $ 已经受到保护,不会在您用于提供awk 脚​​本的单引号内扩展;反斜杠是不必要的,并防止 awk 将其用作字段扩展。

标签: unix awk sh sunos


【解决方案1】:

您在awk 脚本中过度引用了$s:

hrs=`uptime | awk '{print $5}' | sed 's/[:,]/ /g' | awk '{print $1}'`
mins=`uptime | awk '{print $5}' | sed 's/[:,]/ /g' | awk '{print $2}'`

您还做了不必要的工作。获得正常运行时间一次

uptime=$(uptime | awk '{print $5}')

然后使用 shell 本身拆分 : 上的值。

IFS=: read hrs min <<< "$uptime"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2014-06-02
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多