2013-07-04 3 views
6

мне нужно использовать СЭД в Баш скрипт для добавления строк после любой строки Спальных сценария с некоторой пары значений (ниже работы)Расширить переменные в SED

sed -i.bak '14i\some_text=some_text' file 

Но мне нужно на Баш скрипт (ш) для расширить переменные (ниже не работают)

sed -i.bak '$number_linei\$var1=$var2' $var3 

ответ

10

Просто используйте двойные кавычки вместо одинарных кавычек. Вам также нужно будет использовать {}, чтобы правильно разграничить number_line и избежать \.

sed -i.bak "${number_line}i\\$var1=$var2" $var3 

Я лично предпочитаю, чтобы увидеть все переменных использовать {}, в конечном итоге что-то вроде:

sed -i.bak "${number_line}i\\${var1}=${var2}" ${var3} 
+0

Много танков. Немного смущает, что я убегаю. Работа для меня – abkrim

1

Изменить одиночные кавычки в двойные кавычки:

man bash:

Enclosing characters in single quotes preserves the literal value of 
    each character within the quotes. 

    Enclosing characters in double quotes preserves the literal value of 
    all characters within the quotes, with the exception of $, `, \, and, 
    when history expansion is enabled, !. The characters $ and ` retain 
    their special meaning within double quotes. 
+0

Необходимо, но не достаточно, чтобы исправить проблемы в OP еще. –

+0

Немного смущает меня. Если спросить, это потому, что я попробовал несколько вариантов. «", '' и не работает для меня. После прочтения первого ответа получите мэра knowledg, и я могу продолжить свою работу. – abkrim

+0

@AbdelKarimMateosSanchez Вы можете отметить верхний ответ как [принято] (http://meta.stackexchange.com/a/5235/181223). –

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