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

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

于 2013-03-26T17:57:10.633 回答
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 回答