【发布时间】:2011-01-07 18:41:47
【问题描述】:
我在shell中设置了一个变量:
-bash-3.00$ echo $source_repl
source ../setup_simple.tcl
然后我尝试用变量字符串替换文件中以字符串“package require IxLoad”开头的行(注意双引号是让 sed 使用变量替换的方法)。首先我尝试了直接替换(没有转义变量中的 $):
-bash-3.00$ sed -e "s/package require IxLoad.*/$source_repl/g" smtp_tput191Mb.tcl > tmpwatch.tcl
sed: -e expression #1, char 38: unknown option to `s'
-bash-3.00$
所以我认为转义 $ 可以解决问题,但正如您所见,该行随后被文字字符串“$source_repl”替换,而不是存储在那里的变量:
-bash-3.00$ sed -e "s/package require IxLoad.*/\$source_repl/g" smtp_tput191Mb.tcl > tmpwatch.tcl
-bash-3.00$ diff smtp_tput191Mb.tcl tmpwatch.tcl
11c11
< package require IxLoad
---
> $source_repl
-bash-3.00$
我查找了许多关于如何在 sed 中进行变量替换的网站,它们似乎都表明上述方法应该有效。我错过了什么?实际变量中是否存在导致这种情况的原因?
一个
【问题讨论】: