0

以下のように関数からsedのパラメータを使用しようとしました。「a」が見つかった場合は、「a」の前に # を挿入し、次の行に「a」を追加します。parama は paramb と同じ内容ですが、paramb を指定した sed コマンドが失敗した理由がわかりません。関数から返された改行文字がトリミングされているようですか? エラーメッセージは「sed: -e expression #1, char 6: unterminated `s' command」です

助けてください、ありがとう。

parama="-e s/a/#&\n&/g"
echo "a" | sed $parama


test (){
    echo "-e s/a/#&\n&/g"
}

paramb=$(test)

echo "a" | sed $paramb
4

3 に答える 3

0

違いを再現できませんでした。あなたechoがたまたま解釈したのかもしれません\n。試す:

printf "%s\n" "-e s/a/#&\n&/g"
于 2013-03-26T17:59:21.190 に答える
0

私は、あなたはこのようにするべきだと思います:

parama="-e s/a/#&\n&/g"
echo "a" | sed $parama


function test(){
    echo "-e s/a/#&\n&/g";
}

paramb=$(test);

echo "a" | sed $paramb

あなたはあなたの関数に名前を付けていません。私はそれをtest.Outputと名付けました。

$ ./testso2.sh 
#a
a
#a
a
于 2013-03-26T17:12:51.710 に答える
0

私のスクリプトはbashでうまく動作しますが、実際には/ bin/dashである/ bin/shではありません。私の問題は修正されました。ありがとう。

于 2013-03-26T17:57:10.633 に答える