2015-07-29 2 views
4

Я создал сценарий bash, который принимает параметр. Я хочу передать этот параметр, чтобы СЭД, чтобы заменить существующую строку другой, которая состоит из переменной:Sed заменить переменную в двойных кавычках

variable=$1 
echo $variable 
sed -i -e 's/name="master"/name="$variable"/g' test 

Проблема заключается в том, что скрипт не заменяет переменную $ с параметром, это просто заменив строку с «$ переменная»:

<host name=""$variable"" xmlns="urn:jboss:domain:3:0:> 

Как я могу заменить строку в кавычках с переменной?

ответ

7

Variable расширение не происходит в одинарные кавычки. Есть ли в двойные кавычки:

sed -i -e 's/name="master"/name="'"$variable"'"/g' test 
+0

совершенны, спасибо! –

+1

Остерегайтесь, однако, что вам нужно избегать символов, интерпретируемых специально 'sed' (например,'/') в значении' variable'. – chepner

2

Измените код, как его,

sed -i -e 's/name="master"/name="'"$variable"'"/g' test 
-2

просто сделать так:

var=apple 
sed -i "s/pineapple/$" 
+1

Можно ли предположить, что вы действительно пробовали этот код? Следует ли просто игнорировать тот факт, что вы не указали имя файла '-i' или синтаксически достоверную команду sed? –

Смежные вопросы