私はこのスクリプトを書きました:
#!/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
なぜ機能しないのですか?
私はこのスクリプトを書きました:
#!/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
なぜ機能しないのですか?
あなたは常にあなたの拡張を引用するべきです。[
テストコマンドのエイリアスです。他のコマンドと同じように、引数を取ります。$ DEVICE変数は、コマンドを実行する前に展開されます。
$ DEVICEに空白が含まれている場合、コマンドは次のようになります。
[ foo bar = "hw.machine: iPhone3,1" ]
この例test
では、比較演算子「=」の前に引数「foo」と「bar」を取得しています。
拡張を引用する必要があります:
if [ "$DEVICE" = "hw.machine: iPhone3,1" ]
もう1つの注意点は[[
、bashで使用する場合、単語の分割は。内では発生しないため、これは問題ではないということです[[
。
見積もりの詳細については、以下を参照してください:http: //mywiki.wooledge.org/Quotes