【发布时间】:2013-10-17 16:41:42
【问题描述】:
我有一个像这样的 sed 命令来搜索和替换文件中的字符串:
sed -i -e 's/`db1`./`db2`./g' result/files1.sql
在以下文件中将 db1 替换为 db2 可以正常工作:result/files1.sql
但是,当我将其更改为 bash 和变量格式时,它不起作用。
sed -i -e "s/`${mydbname}`./`${mydbname2}`./g" "${mypath}"
我得到如下错误:
./mycoolscript: line 241: db1: command not found
./mycoolscript: line 241: db2: command not found
任何解决方案都会很棒。
【问题讨论】:
-
为什么需要在 ${mydbname} 周围添加`?它使第二个 sed 命令认为 db1 是一个命令,而不是您要替换的字符串。请注意,shell 将替换 ""(引号)内的任何变量,包括
COMMAND,但不会替换 ''(单引号)内的变量。