sedスクリプトには、次のように更新する必要がある次の行がありますsed
。
opennic="nameserver 95.85.9.86\nnameserver 185.83.217.248\nnameserver 193.183.98.154\nnameserver 5.9.49.12"
コマンドsed
は次のとおりです。
sed -i.bak s/^opennic=\".*\"/opennic=\"${u}\"/g /absolute/path/to/script.sh
そして$u
:
nameserver 104.238.153.178\\nnameserver 141.138.157.53\\nnameserver 45.63.91.109\\n
私が受け取ったエラーメッセージは次のとおりです。
sed: -e expression #1, char 35: unterminated `s' command
のエスケープ文字に問題があるようですが、$u
正確にはわかりません。
会社にどうやって行きますかsed
?
答え1
sed
コマンドに二重引用符を使用する必要があります。
$ sed -i.bak "s/^opennic=\".*\"/opennic=\"${u}\"/g" /absolute/path/to/script.sh
引用符がない場合、sed は複数の引数で実行されます。$u
変数をスペースで複数のパラメータに分割します。
次のようになります(各行は異なるパラメータです)。
$ sed \
's/^opennic=".*"/opennic="nameserver' \
'104.238.153.178\\nnameserver' \
[...]`
ここで、最初のs/^[...]
コマンドは未完了のままです。