一个函数的sed参数?

时间:2013-03-26 16:45:42

标签: regex bash sed

我尝试使用sed的参数来自下面的函数。 如果找到'a',则在'a'之前插入#,然后将'a'附加到下一行。 该parama与paramb具有相同的内容,但我不明白为什么用paramb的sed命令失败了。 似乎从函数返回的换行符被修剪了? 错误消息是“sed:-e expression#1,char 6:unterminated`s s”命令“

请帮助,谢谢。

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


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

paramb=$(test)

echo "a" | sed $paramb

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这似乎是shell的问题,我的脚本运行良好的bash,但不是/ bin / sh实际上是/ bin / dash。我的问题现在已经解决了。感谢。

答案 2 :(得分:0)

我无法重现差异。可能是您的echo恰好解释了\n。尝试:

printf "%s\n" "-e s/a/#&\n&/g"