【问题标题】:How to check system version and do the script under the stipulation如何检查系统版本并按照规定执行脚本
【发布时间】:2014-12-03 10:42:08
【问题描述】:

Hey guys。请帮忙!

我需要检查 iOS 版本,如果it's >=8.0(可以是 8.0 或 8.1 或 8.1.1 或 8.2) 执行第一个脚本,if it's <8.0(可以是 7.1.2 或 7.1 或 6.1.3 等) 做另一个。

检查命令是sw_vers -productVersion 所以我不知道如何让脚本读取该命令的结果,然后按照规定执行脚本。 请帮助我如何正确地做到这一点!

我试过这样的

sw_vers -productVersion 
read -p num;
if [[ $num -lt 8 ]]; then
        echo "7";

else
        echo "8" 
fi

但在这种情况下,我需要按下回车按钮,但我不确定它是否可以正常工作。

【问题讨论】:

  • 请发布命令sw_vers -productVersion的输出
  • 在我的情况下,输出是 7.1.2(因为安装了 iOS7.1.2.;对于其他用户可能会有所不同)
  • 有很多方法可以满足您的需求。一些:(1)将sw_vers 命令的输出传递给grep 命令(2)将sw_vers 命令的输出分配给一个变量,并检查该值是否以字符8. 开头跨度>
  • 好吧,感谢您的回复,但我在 bash 中有点菜鸟。你能写一个完整的解决方案吗?我的意思是我应该粘贴到我的脚本中以获得我想要的命令:)
  • 试试IF=. read num _ <<<$(sw_vers -productVersion)。那么num 变量应该包含sw_vers 命令输出的第一个点之前的任何内容。

标签: ios bash command-line terminal


【解决方案1】:
IFS=. read num _ < <(sw_vers -productVersion)

if   [ "$num" -lt 8 ]
then
     echo "7 or lower"
else
     echo "8 or upper" 
fi

【讨论】:

  • 错误:第 3 行:[:7.1.2:预期的整数表达式
  • 问题不在于 IFS,而在于:if ["$num" -lt 8]。第 3 行出现错误:[: 7 1 2: integer expression expected。当我写 IF 时它是 7.1.2。当我写 IFS 时它是 7 1 2(带空格)
  • 哦,伙计,它有效!做得好!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多