お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-03-21 18:45:26

kei_2005
新しいメンバ
登録日: 2009-01-18

シェルスクリプトの文字列比較が上手くいかない

以下のようなシェルスクリプトを作ったのですが、妙なエラーがはかれてしまいます
/↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓/
#!/bin/sh
mainDir=/root/ddnsUpdate/

oIP=`sed -n '19,19p' ${mainDir}oldGIP`
nIP=`sed -n '19,19p' ${mainDir}newGIP`

echo "古 $oIP"
echo "新 $nIP"

if ["$oIP" = "$nIP"]; then
        echo "yes"
else
        echo "no"
fi
/↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/

実行結果は以下の通りです
/↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓/
古 GetExternalIPAddress用IPアドレス: 192.168.xxx.xxx
新 GetExternalIPAddress用IPアドレス: 192.168.xxx.xxx
: not found[GetExternalIPAddress用IPアドレス: 192.168.xxx.xxx
no
/↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/

何故not foundが出るのかも判らず、多分そのせいでif文も上手く動いてないようです・・・

よろしくお願いします

オフライン

 

#2 2009-03-22 00:00:41

toshio
メンバ
登録日: 2007-11-14

Re: シェルスクリプトの文字列比較が上手くいかない

コード:

if ["$oIP" = "$nIP" ]; then

のように、[と"$oIP"をくっつけていませんか?
[]で条件式を作る場合、[と]とその他の条件式の構成要素の間には空白が必要です。

ご存知かも知れませんが、[はコマンドとしてシェルによって実行されています。
[と"$oIP"をくっつけると、シェルは["$oIP"を一つのコマンドとして実行しようとします。
当然そんなコマンドないのでnot foundと出ます。

オフライン

 

#3 2009-03-22 16:36:58

kei_2005
新しいメンバ
登録日: 2009-01-18

Re: シェルスクリプトの文字列比較が上手くいかない

>ご存知かも知れませんが、[はコマンドとしてシェルによって実行されています。
知りませんでした・・・
適当にサンプルを探して真似ていただけでした・・・
確かに[]にブランクを挟むと正常に作動しました

ありがとうございます

オフライン

 

Board footer

Powered by FluxBB