2013-12-20 2 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 
first appended line 
second appended line 
" 

하지만 당신은 여분의 줄 바꿈이 방법으로 삽입 점에 유의 - WPA는 마지막에 줄 바꿈을했다 $를 다른있다 :

당신은 $에 WPA를 추가 텍스트를 반향 할 경우, 다음과 같이 그것을 할 새로운 텍스트의 시작 부분에 하나. 이를 피하려면

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

{} 인용 부호는 변수 이름을 구분합니다.

WPA="$WPAfirst appended line 

를 사용하면 WPAfirst라는 변수를 찾을 것입니다.

2

heredoc의 delimeter를 인용 할 때, 변수는 보간되지 않습니다.

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

는 WPA 블록에 추가 텍스트를 추가 할 수 있습니다 : 그냥 따옴표를 삭제?

$WPA

그냥 일반 쉘 변수 (즉, 여러 줄 문자열을 포함하는 일), 그래서 당신은 +=로에 추가 할 수있다; 예를 들면 : 당신은/APPEND를, 또 다른 히어 닥의 내용을 추가 별도의 변수에 할당하고 @GuntramBlohm가 지적한대로, 당신은 그냥 간단하게 할당 할 수 WPA에 그것을 추가 (하지만 싶었다면

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

멀티 라인 문자열 직접).

관련 문제