我設立在外殼的變量:SED變量替換似乎不工作
-bash-3.00$ echo $source_repl
source ../setup_simple.tcl
我又試圖取代以字符串開始一個文件中的行「包需要的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變量替換,他們都似乎表明,上述工作應許多網站。我錯過了什麼?實際變量中是否存在導致此問題的內容?
一個
當它們位於's ///'命令的右側時,不需要轉義這些點。 –