2016-09-05 4 views
1

배열 변수를 사용했지만 오류가 발생하여 문자열을 연결하려고합니다.쉘 스크립트에서 배열 변수를 사용하여 변수 초기화하기

declare -a arr 
arr=(one two three) 
var= "${arr[0]} ${arr[1]}" 
echo $var 

예상 출력

one two 

(하나, 둘 사이에 4 개 공간) 내가 점점 오전 다음과 같은 오류 : -

[[email protected] IBM]$ ./test.sh 
./test.sh: line 10: one  two: command not found 

우리가 할당 할 수 없습니다이 평균을 하는가 배열 요소가있는 변수 (변수로 사용)?

var="${arr[0]} ${arr[1]}" 

배쉬는 명령을 호출 할 때 일시적으로 변수를 설정할 수있는 구문을 지원합니다 당신은 = 후 공간을 제거해야이

답변

2

을 할 수있는 다른 방법은 무엇입니까. 이 구문은 VARNAME=somevalue command처럼 작동합니다. 그러면 (환경) 변수 VARNAMEsomevalue으로 설정하여 명령을 실행합니다. VARNAME= command이라고하면 bash는이를 VARNAME="" command으로 해석합니다. 즉 변수를 빈 문자열로 설정합니다. 귀하의 경우 bash는 명령 인 것처럼 "${arr[0]} ${arr[1]}" 부분을 실행하려고 시도합니다.

1

과제에 추가 공간이 있습니다. 또한 표시되는 오류 메시지가

echo "$var" 

이유에 공백을 보존하기 위해 에코의 인수를 인용한다

var="${arr[0]} ${arr[1]}" 

var= "${arr[0]} ${arr[1]}" 
# ^

가있다 교체가 때 공백 기호 뒤에 공백이 있으면 bash는 명령을 var이라는 빈 환경 변수를 할당하는 것으로 해석 한 다음명령을 실행하려고 시도합니다.은 one two으로 평가되므로 명령을 찾을 수 없음 오류

관련 문제