我正在尝试将变量放入一个文本块中,以后将其回显到文件中。
问题是$ VAR没有转换成变量的值??
VAR="SOME Value"
read -d '' WPA <<"BLOCK"
Description='WIFI'
Interface=wlan0
Connection=wireless
IP=dhcp
Security=wpa
Key=$VAR
BLOCK
echo "$WPA"
此外,是否可以将更多文本附加到WPA块?
答案 0 :(得分:2)
当引用heredoc的分隔符时,不会插入变量。只需删除引号:
read -d '' WPA <<BLOCK
Description='WIFI'
Interface=wlan0
Connection=wireless
IP=dhcp
Security=wpa
Key=$VAR
BLOCK
答案 1 :(得分:1)
你为什么不这么说
WPA="Description='WIFI'
Interface=wlan0
Connection=wireless
IP=dhcp
Security=wpa
Key=$VAR
"
在你的情况下,没有必要使用read。
如果要将附加文本回显到$ WPA,请执行以下操作:
WPA="$WPA
first appended line
second appended line
"
但要注意你以这种方式插入一个额外的换行符 - $ WPA在最后有一个换行符,而在新文本的开头有另一个换行符。为避免这种情况,请使用
WPA="${WPA}first appended line
second appended line
"
{}引号分隔变量名称。使用
WPA="$WPAfirst appended line
会查找名为WPAfirst的变量。
答案 2 :(得分:0)
是否可以将更多文本附加到WPA块?
$WPA
只是一个普通的shell变量(恰好包含一个多行字符串),因此您可以使用+=
附加到它; e.g:
WPA+=$'\nanother line\nand another'
如果你想附加另一个 heredoc 的内容,请将其分配给一个单独的变量并将其附加到WPA
(但是,正如@GuntramBlohm指出的那样,你可以很容易直接分配/附加多行字符串。)