sed脚本中的Shell变量

sha*_*nuo 17 sed

sed命令在命令提示符下按预期工作,但在shell脚本中不起作用.

new_db_name=`echo "$new_db_name" | sed 's/$replace_string/$replace_with/'`
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我该如何解决?

Del*_*ani 49

sed表达式使用双引号.

new_db_name=`echo "$new_db_name" | sed "s/$replace_string/$replace_with/"`
Run Code Online (Sandbox Code Playgroud)


gle*_*man 5

如果你使用bash,这应该工作:

new_db_name=${new_db_name/$replace_string/$replace_with}
Run Code Online (Sandbox Code Playgroud)


Yat*_*tin 5

这对我使用 env 参数很有用。

export a=foo
export b=bar

echo a/b | sed 's/a/'$b'/'

bar/b
Run Code Online (Sandbox Code Playgroud)