Regex 函数中的sed参数?

Regex 函数中的sed参数?,regex,bash,sed,Regex,Bash,Sed,我尝试使用下面函数中的sed参数。 如果找到“a”,则在“a”之前插入#,然后在下一行中追加“a”。 parama的内容与paramb相同,但我不理解为什么带有paramb的sed命令失败。 从函数返回的换行符似乎被修剪了? 错误消息为“sed:-e表达式#1,字符6:unterminated`s'命令” 请帮忙,谢谢 parama="-e s/a/#&\n&/g" echo "a" | sed $parama test (){ echo "-e s/a/#&

我尝试使用下面函数中的sed参数。 如果找到“a”,则在“a”之前插入#,然后在下一行中追加“a”。 parama的内容与paramb相同,但我不理解为什么带有paramb的sed命令失败。 从函数返回的换行符似乎被修剪了? 错误消息为“sed:-e表达式#1,字符6:unterminated`s'命令”

请帮忙,谢谢

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


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

paramb=$(test)

echo "a" | sed $paramb

我想,你应该这样做:

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。我得到的输出:

$ ./testso2.sh 
#a
a
#a
a

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

我无法重现不同之处。可能是您的
回声
碰巧解释了
\n
。尝试:

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

您不应该在
bash
中定义这样一个名为
function
的函数,因为它是一个保留字。谢谢,但这是函数名的问题,函数名为“test”时也失败了。@timchen您期望的输出是什么?结果是shell的问题,bash没有问题,但/bin/sh没有问题(实际上是/bin/dash)