2009-04-16 28 views
0

cygwinで現在のIPアドレスから2を引いた現在のIPアドレスを表示するスクリプトを作成しています。何らかの理由で、次のエラーが表示されます。 ")構文エラー:無効な算術演算子(エラートークンは"演算子が無効です

これは私が使用していたスクリプトである。

$ cat test3.sh 
#!/bin/bash 
# 
function IPADDRESS { 
    v=$4 
    echo $1.$2.$3.$((v-2)) 
} 
ADDRESS=$(ipconfig | grep Address | cut -f2 -d :) 
# echo $ADDRESS 
IPADDRESS ${ADDRESS//\./ } 

任意のヘルプや提案がapprieciatedされる!

答えて

4

あなたが実際にそのスクリプトを使用して問題のカップルを持っている。大きな1は、IPCONFIGが出力「ということです\ rの文字は、行の終わりに計算を詰め込むLation。

もう1つは、複数のNICを許可していないということです。したがって、私の"head -1"が追加されました。あなたは、少し知的にしたいNICを選択する必要があります。

最後に、IPアドレスの先頭から先頭のスペース(実​​際にはすべてのスペース)を削除しました。

私のために、次の作品:

#!/bin/bash 
#set -x 

function IPADDRESS { 
    ((v = $4 - 2)) 
    echo $1.$2.$3.$v 
} 
ADDRESS=$(ipconfig | grep Address | head -1 | cut -f2 -d: | sed 's/[ \r]//g') 
echo $ADDRESS 
IPADDRESS $ADDRESS 

出力:

192.168.91.7 
192.168.91.5 

は、実は、私のバージョンの出力は次のよう

192.168.91.1 
192.168.91.-1 

ので、あなたは注意する必要がありますそれ。

私は印象的な/カジョールの管理のために出力をダミーにするのは見知らぬ人です:-)。

有用なスニペットは:(UNは、コメント)スクリプトの上部に"set -x"

エラーこれらの種類を見つけるために理想的です。すべての置換の後で実行する前に各行を出力するので、何が起こっているかを正確に見ることができます。

0

私はいくつかの組み合わせを試しました。次は私のために働いた。セット-xは本当に助けになりました。再度、感謝します。

#!/bin/bash 
#set -x 
function IPADDRESS { 
    v=$4 
echo $1.$2.$3.$((v-2)) 
} 
ADDRESS=$(ipconfig | grep Address | head -1 | cut -f2 -d: | sed 's/[ \r]//g') 
IPADDRESS ${ADDRESS//\./} 
関連する問題