如何使用bash脚本中的变量更改sed行

时间:2013-12-20 22:42:19

标签: string bash variables replace sed

我有一个脚本文件,我试图通过几个启动脚本修改命令行参数。这个bash脚本将查找路径并用新的行替换整行。任何帮助将不胜感激,下面你会找到我的代码示例。

Path=/usr/bin/MyApplication
NewArguments= -a1 -b2 -c3
NewCommand="$Path $NewArguments"

sed -i 's,^'"$Path"'*,\'"$NewCommand"',' /root/etc/rc.d/99_start_app.sh

我正在寻找的是转换这样的一行:

/usr/bin/MyApplication -x1 -y2 -z3 

进入这个:

/usr/bin/MyApplication -a1 -b2 -c3 &

对此有任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

双引号以扩展shell变量

sed "s/$var/$var2/" file

答案 1 :(得分:0)

我认为你的意思是:

sed -i 's,^'"$Path"','"$NewCommand"',' /root/etc/rc.d/99_start_app.sh

...可以简化为:

sed -i s,^"$Path","$NewCommand", /root/etc/rc.d/99_start_app.sh

......可能更容易阅读:

sed -i "s,^$Path,$NewCommand," /root/etc/rc.d/99_start_app.sh

实际上你指定NewArguments的方式也不正确,我也会改进sed,所以最后你的脚本可以像这样编写:

Path=/usr/bin/MyApplication
NewArguments='-a1 -b2 -c3'    
sed -i "s,^$Path.*,$Path $NewArguments \&," /root/etc/rc.d/99_start_app.sh