2016-05-31 5 views
1

아래와 같이 여러 변수로 배열을 초기화하려고합니다.배쉬 (Bash) : 여기서 문자열 <<<<은 다중 변수를 입력으로 사용할 수 있습니까?

StringOne="This is a Test String" 
StringTwo="This is a New String" 
read -r -a Values <<< "$StringOne" "$StringTwo" 

그러나 그것은 배열처럼 보인다는 첫 번째 변수 .IE의 StringOne에서 값을 얻는 것은

$ echo ${Values[0]} 
This 
$ echo ${Values[1]} 
is 
$ echo ${Values[2]} 
a 
$ echo ${Values[3]} 
Test 
${Values[4]} 
String 
$ echo ${Values[5]} 

$ echo ${Values[6]} 

$ 

배열 초기화 변수 값을 전달의 방식에 어떤 문제가 있습니까? 우리는 < < < 연산자를 사용하여 여러 변수를 전달합니까?

+0

$ {Values ​​[5]} = $ {Values ​​[7]} = $ {Values ​​[8]} = New 또한 비슷하게 –

+0

문제를 해결할 수 있습니까? ? 'read -r -a Values ​​<<< "$ StringOne $ StringTwo"' – gudok

+0

덕분에 @gudok이게 지금 일하고있다 –

답변

2

배열 초기화에 변수 값을 전달하는 방법에는 어떤 문제가 있습니까? 우리는 < < < 연산자를 사용하여 여러 변수를 전달합니까?

예 아니오. <<< 연산자는 하나의 쉘 단어를 피연산자로 사용합니다. 하지만 당신은 인용의 적절한 사용하여 단일 쉘 단어에 여러 변수의 값을 결합 할 수 있습니다 :

StringOne="This is a Test String" 
StringTwo="This is a New String" 
read -r -a Values <<< "$StringOne $StringTwo" 
echo "${Values[@]}" 

출력 :

이이 새로운 문자열

+0

출력을 따옴표로 결합하는 것에 대해 생각하지 않았습니다. 이제 알았어. –

0
하는 테스트 문자열입니다

사용 :

read -r -a Values <<< "$StringOne"" ""$StringTwo" 

또는 :

read -r -a Values <<< "$StringOne"' '"$StringTwo" 

또는 :

out="$StringOne $StringTwo" 
read -r -a Values <<< "$out" 

또는이 주제에 대한 몇 가지 다른 변화.

<<<을 통해 전송 된 문자열은 오른쪽에있는 내용을 확장 한 결과이므로 작동합니다. 두 변수를 연결하여 하나의 긴 문자열로 사용할 수 있습니다.

+2

또는'read -r -a Values ​​<<< "$ stringOne $ stringTwo"' – andlrc