2017-02-22 15 views
0

私がやろうとしていることから始めましょう。
特定の行を見つけてその下の行を変更するsedステートメントがあります。これのために、私はまずその下の行を削除し、私が望む行を追加します。置換えされていない置換パターンを与える関数を使ってsedを実行する

sed -e '/'"$rootline"'/ {N;s/\n.*//;}' -e '/'"$rootline"'/ a\ 
'"$1 $linetoadd" <tmpmain >tmpsec 

ここで、最初の式は$ rootlineに式を含む行を見つけて、次の行を削除します。そして式2は$ rootlineの行の後に追加したい行を追加します。
以前は別の.shファイルでこれを持っていましたが、sudoでファイルを呼び出すと(ファイル内の他の重要な操作でsudoを使用していました)、完全に機能しました。
今私はそれを関数に入れて、同じ.shファイルを通して呼び出そうとしています。 sudoでこの関数を呼び出すには、私はこれをanswerを使用しています。すべてが機能のsudoの部分に関して正常に動作しているようだが、それは上記の指定されたSEDの動作に来るとき、私は次の

sed: 1: "/root ALL=/ {N;s/ 
.*//;} 
": unterminated substitute pattern #$rootline='root ALL=' 

私はこのエラーを取得していますなぜ上の任意の手掛かりを得ますか?

注:私は、Mac OS X

答えて

0

を働いている私はエラーを得ました。実際にはかなり愚かです。
私が関数でsudoを使用する方法は、関数の内容をファイルにエコーすることでした。 Got it from here.
そして、それが次のコードをファイルにエコーしていたとき。

sed -e '/'"$rootline"'/ {N;s/\n.*//;}' -e '/'"$rootline"'/ a\ 
'"$1 $linetoadd" <tmpmain >tmpsec 

「\ n」を改行文字として使用し、「\ n」ではなく新しい行を印刷していたため、sedエラーが発生しました。

関連する問題