【问题标题】:Check what device are You running and execute action检查您正在运行什么设备并执行操作
【发布时间】:2012-07-09 05:59:22
【问题描述】:

我写了这个脚本:

#!/bin/sh

DEVICE=`sysctl hw.machine`

if [ $DEVICE = "hw.machine: iPhone3,1" ]
 then
  echo "Test Done"
 else
  echo "Test failed"
fi

运行后我收到一条消息:./test: line 5: [: too many arguments 为什么它不起作用?

【问题讨论】:

    标签: iphone ios shell if-statement sysctl


    【解决方案1】:

    您应该始终引用您的扩展。 [ 是测试命令的别名。就像任何其他命令一样,它需要参数。 $DEVICE 变量在命令运行之前展开。

    如果 $DEVICE 包含空格,则命令如下所示:

    [ foo bar = "hw.machine: iPhone3,1" ]
    

    在此示例中,test 在比较运算符“=”之前获取参数“foo”和“bar”。

    你需要引用扩展:

    if [ "$DEVICE" = "hw.machine: iPhone3,1" ]
    

    另一个注意事项是,如果在 bash 中使用 [[,这不是问题,因为在 [[ 内部不会发生分词。

    有关引用的更多信息,请参阅以下内容:http://mywiki.wooledge.org/Quotes

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2019-05-26
      • 2019-12-22
      相关资源
      最近更新 更多