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