Unix - bash -OSX



尝试使用GREP查找一些信息。评估信息。然后执行功能。

我拥有的,任何帮助都将受到赞赏。

修复到:

#! /bin/bash
UT=$(/usr/sbin/system_profiler SPSoftwareDataType | grep "Time since boot" | grep "days")
if [ "$UT" -ge "5 days" ]; then
echo this
else    
echo that
fi

spsoftwaredatate看起来像这样: 系统软件概述:

  System Version: OS X 10.9.5 
  Kernel Version: Darwin 13.4.0
  Boot Volume: Macintosh HD
  Boot Mode: Normal
  Computer Name: xxxxxxxxxxxx
  User Name: xxxxxxxxxx (xxxxxxxxxx)
  Secure Virtual Memory: Enabled
  Time since boot: 8 days 3:25

尝试使用sysctl

#! /bin/bash
UT=$(awk -F":" ' $4 > 200 ' sysctl -n kern.boottime)
echo $UT
if [ “$UT” -ge “1430315296” ]; then
    echo this
else    
    echo that
fi

我看不到您期望 awk与其他任何东西中指定的任何内容进行比较...我也不知道为什么您会选择解析system_profiler输出。

您是否考虑过:

sysctl -n kern.boottime
{ sec = 1431023230, usec = 0 } Thu May  7 19:27:10 201

哪个将在几秒钟内给出启动时间,因为这只是一个简单的整数,您可以与其他时间进行比较?

所以,您可以像这样的几秒钟

解析
UT=$(sysctl -n kern.boottime | awk -F"[ ,]+" '{print $4}')

-F"[ ,]+"说要将多个空间或逗号视为场分离器。

您可以在awk

中完成所有操作
awk '/Time since boot.*days/ {print ($4>5?"This":"That")}' file
This

awk '/Time since boot.*days/ {print ($4>8?"This":"That")}' file
That

编辑:

#!/bin/bash
/usr/sbin/system_profiler SPSoftwareDataType | awk '/Time since boot.*days/ {print ($4>8?"This":"That")}'

相关内容

  • 没有找到相关文章

最新更新