我尝试使用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
答案 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"