2017-02-13 13 views
1

У меня есть Баш скрипт и у меня есть строка с некоторой \n: п не работает в Linux файл

interfaces="auto lo\niface lo inet loopback\n\n..." 

Тогда я пытаюсь написать это в интерфейсах файл следующим образом:

sudo bash -c "echo -e $interfaces > /etc/network/interfaces" 

Я использую -e для отображения \n «S, но если я открываю файл, он не показывает правильно, но если я просто вывести его на терминал работает:

auto loniface lo inet loopbacknn...

+0

Посмотрите на http://stackoverflow.com/questions/9139401/trying-to-embed-newline-in-a-variable-in-bash – Dmitry

+2

@ KenY-N Это не будет работать, когда строка будет заменена на аргумент 'bash -c'. 'bash' увидит это как литерал новой строки, который является командным разделителем. – Barmar

+0

@ KenY-N Я имею в виду, если я 'эхо' его к терминалу, он работает, но не в файле. Сейчас я попробую решение @Barmar. – WasteD

ответ

5

Положить кавычки вокруг переменной.

sudo bash -c "echo -e '$interfaces' > /etc/network/interfaces" 

Вне строки в кавычках, \n заменяется n.

+0

@joepd Нет, это неправильно. – Barmar

+0

Работал для меня спасибо! – WasteD