Я установил переменную в оболочке:
-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, и все они, похоже, указывают на то, что вышеприведенное должно работать.Что мне не хватает?Есть ли что-то в фактической переменной, которая вызывает это?
A