在shell脚本中使用sed命令

时间:2016-06-23 06:13:16

标签: linux bash shell sed

这是我简单的shell脚本

sample.sh

LOCALCONFIGDIR="Install"
CONFLOC="$LOCALCONFIGDIR/server.conf"
echo "Enter Web Url:"
read  weburl
echo "sed 's/^\(ServerName\)$/\1 "$weburl"/' "$CONFLOC
sed "'s/^\(ServerName\)$/\1 "$weburl"/' "$CONFLOC

当我运行此代码时,我在echo命令中得到如下结果。

sed 's/^\(ServerName\)$/\1 www.weburl.com/' Install/server.conf

但是当在下一行执行sed命令时,它会显示以下错误。

sed: -e expression #1, char 1: unknown command: `''

我在终端屏幕上尝试了echo语句中生成的命令,它正在工作。但是Line number 5,没有使用shell脚本

1 个答案:

答案 0 :(得分:1)

您需要使用一组引号,而不是两组引号,并且由于您希望扩展$weburl变量,因此需要使用双引号:

sed "s/^\(ServerName\)$/\1 $weburl/" "$CONFLOC"
只要$weburl不包含任何斜杠,

即可。如果是,则需要使用与/不同的字符(例如%)来分隔替换命令的各个部分:

sed "s%^\(ServerName\)$%\1 $weburl%" "$CONFLOC"