bash:sed:变量中的正则表达式
问题描述:
我对以下脚本感到非常疯狂。bash:sed:变量中的正则表达式
下面的命令按预期工作:
echo a | sed 's/a/b/'
输出:
b
但是这个脚本并不:
test="'s/a/b/'"
echo a | sed $test
输出:
sed: -e expression #1, char 1: unknown command : `''
我真的应该是愚蠢的,但我没有看到我失落的东西。
感谢,
答
这是因为你的双包装你的字符串。 test="'s/a/b'"
。 Sed然后得到's/a/b/'
作为文字字符串。你只希望sed收到s/a/b/
。
您只需将中的字符串包装在一组引号中,否则内部引号集将被解释为参数的一部分。
答
你可能希望这样的:
kent$ test="s/a/b/"
kent$ echo a | sed ${test}
b
或
kent$ echo a | sed $test
b
或
test=s/a/b/
答
test="'s/a/b/'"
echo a | sed $test
等同于:
test="'s/a/b/'"
echo a | sed "'s/a/b/'"
显然sed
不理解既"
和'
命令,它解释'
为命令。您可以使用其中的任何一个:
test='s/a/b/'
或者
test='s/a/b/'