【问题标题】: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