2013-12-20 4 views
0

Я пытаюсь получить переменные в блок текста, который позже будет эхом в файл.Переменные Bash в текстовом блоке

Проблема: $ VAR не преобразуется в значение переменной?

VAR="SOME Value" 

read -d '' WPA <<"BLOCK" 
Description='WIFI' 
Interface=wlan0 
Connection=wireless 
IP=dhcp 
Security=wpa 
Key=$VAR 
BLOCK 

echo "$WPA" 

Кроме того, возможно ли добавить дополнительный текст в блок WPA?

ответ

1

Почему бы вам просто не сказать

WPA="Description='WIFI' 
Interface=wlan0 
Connection=wireless 
IP=dhcp 
Security=wpa 
Key=$VAR 
" 

?

Нет необходимости использовать чтение в вашем случае.

Если вы хотите повторить добавить текст $ WPA, сделать это следующим образом:

WPA="$WPA 
first appended line 
second appended line 
" 

но имейте в виду, что вы вставить дополнительный символ новой строки таким образом - $ WPA был символом новой строки в конце, и есть еще один в начале нового текста. Чтобы этого избежать, используйте

WPA="${WPA}first appended line 
second appended line 
" 

Квотирование {} ограничивает имя переменной. Использование

WPA="$WPAfirst appended line 

будет искать переменную WPAfirst.

2

Когда вы указываете метрику heredoc, переменные не интерполируются. Просто поместите кавычки:

read -d '' WPA <<BLOCK 
Description='WIFI' 
Interface=wlan0 
Connection=wireless 
IP=dhcp 
Security=wpa 
Key=$VAR 
BLOCK 
0

является возможность добавить дополнительный текст к WPA Block?

$WPA просто нормальная переменная оболочки (что случается содержать строку из нескольких строк), так что вы можете добавить к нему с +=; например:

WPA+=$'\nanother line\nand another' 

Если вы хотите добавить содержимое другого Heredoc, назначить его в отдельную переменную и добавить, что WPA (но, как @GuntramBlohm указывает, вы можете так же легко назначить/Append многострочная строка).

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