1

私は、自分の IP アドレスを変数に戻そうとする n00b です。この変数は、bash スクリプト内の sed コマンドで使用されます。ファイル内のテキスト「mycomputer」を自分の IP アドレスに置き換えようとしていますが、うまくいきません。

これが私の試みです:

1

localip=`ipconfig getifaddr en0`
sed -i '' “s/mycomputer/$localip/” config.txt

私が受け取るエラーは次のとおりです。

sed: 1: "“s/mycomputer/192.168 ...": invalid command code ?

2

localip=`ipconfig getifaddr en0`
sed -i '' 's/mycomputer/$localip/g' config.txt

「mycomputer」を「$localip」に変更します - 実際の IP アドレスではありません

3

localip=`ipconfig getifaddr en0`
sed -i '' 's/mycomputer/‘“$localip”’/g’ config.txt

エラー:

./mytest.sh: line 5: unexpected EOF while looking for matching `''
./mytest.sh: line 6: syntax error: unexpected end of file

何かご意見は?!?!

編集

これは、以下のように bash スクリプトで使用するためのものです。

#!/bin/bash

cd "`dirname "$0"`"
localip=`ipconfig getifaddr en0’
sed -i '' "s/mycomputer/$localip/" config.txt
4

2 に答える 2

2

二重引用符が間違っています:

sed -i '' “s/mycomputer/$localip/” config.txt

これはうまくいくはずです(違いに注意してください):

sed -i '' "s/mycomputer/$localip/" config.txt

実際、他の回線でも同様の問題が発生しています。したがって、完全なスクリプトは次のように修正されます。

#!/bin/bash    
cd $(dirname "$0")
localip=$(ipconfig getifaddr en0)
sed -i '' "s/mycomputer/$localip/" config.txt

(BSDシステムおよびMAC-i ''の)のBSDバージョン用であることに注意してください。sedLinux では、同じことを次のように記述します。

sed -i "s/mycomputer/$localip/" config.txt
于 2014-12-15T21:55:36.573 に答える
0

使ってみて

置換を行っているためsed -i ''、シェルのデフォルトの引用符を使用する必要はありません"

スクリプトでsed を使用している場合は$localip、bash が置換できるように、変数を二重のクォートで囲むだけです。

sed -i s/mycomputer/"$localip"/ config.txt
于 2014-12-15T22:15:37.113 に答える