我正在試圖將變量放入一個文本塊中,該文本塊稍後將被回顯到文件中。文本塊內的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塊?
我正在試圖將變量放入一個文本塊中,該文本塊稍後將被回顯到文件中。文本塊內的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塊?
你爲什麼不只是說
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的變量。
當您引用heredoc的分隔符時,變量不會被插值。剛落引號:
read -d '' WPA <<BLOCK
Description='WIFI'
Interface=wlan0
Connection=wireless
IP=dhcp
Security=wpa
Key=$VAR
BLOCK
,纔有可能進一步文本追加到WPA塊?
$WPA
只是一個普通的殼變量(即恰好包含一個多行字符串),這樣就可以追加到它與+=
;例如:
WPA+=$'\nanother line\nand another'
如果你想另一個定界符的內容追加,將其分配給一個單獨的變量和追加,要WPA
(但是,正如@GuntramBlohm所指出的,你可以很輕鬆地分配/追加一個多行字符串直接)。