(3) 배열
배열을 선언하여 값을 할당하는 방법에는 크게 두 가지 정도가 있습니다.
하나는 배열의 인덱스 하나하나를 구분하여 각각의 인덱스에 일일이 값을 지정하는 방법과, 또 다른 하나는 뭉탱이로 배열에 값을 넣어주는 방법입니다.
먼저 인덱스 하나하나에 값을 따로따로 지정하는 방법은 다음과 같습니다.
array[1]='Script'
array[2]='Programming'
위 예제의 경우, 인덱스 '0'에는 'Shell'이란 문자열이, 인덱스 '1'에는 'Script'란 문자열이, 인덱스 '2'에는 'Programming'이란 문자열이 각각 지정되었습니다.
위와 같이 지정한 후, 다른 라인에서 해당 배열 변수값을 호출하고자 할 때는 아래와 같이 사용하면 됩니다.
echo ${array[1]}
버퍼에 있는 변수값을 호출하려 할 때, '$'를 붙여서 사용하면 된다는 것은 앞의 글에서 이미 설명 드렸었습니다.
헌데, 위 예시에는 그동안 사용하지 않았던 '{ }'(중괄호)가 들어가 있죠?
왜일까요?
다음과 같은 아주 간단한 스크립트가 있습니다.
#!/bin/sh
array[0]='Shell'
array[1]='Script'
echo $array[0] $array[1]
echo ${array[0]} ${array[1]}
위 스크립트를 실행시키면 첫 번째 echo 문의 결과값은 'Shell[0] Shell[1]' 이라고 출력되고, 두 번째 echo 문의 결과값은 'Shell Script'라고 출력됩니다.
이유인즉슨, '{ }'(중괄호)를 사용하여 array[0], array[1] 등을 하나의 변수로 처리해 주지 않으면, [0], [1] 등을 인식하지 못하고 해당 배열의 첫 번째 인덱스값만 불러오게 되어 있기 때문입니다.
꼭 배열을 사용할 때 뿐만 아니라, 많은 경우에서 '{ }'(중괄호)를 필요로 하게 됩니다.
'이것은 변수다'라는 것을 명시적으로 표기하여 소스의 가독성을 높이고자 한다면, 변수 호출 시마다 '{ }'(중괄호)를 붙여주는 것이 좋습니다.
다음은 뭉탱이로 배열에 값을 할당하여 주는 방법입니다.
뭉탱이로 배열에 값을 할당하는 방법도 몇 가지가 있는데, 그 중 사용이 쉽고 자주 쓰이는 두 가지 방식만 살펴보도록 하겠습니다.
첫 번째 방식은 다음과 같습니다.
array=(shell script programming)
일일이 값을 할당하는 방식에 비해 훨씬 간결하죠?
배열의 인덱스마다 일일이 값을 할당하나, 괄호를 사용하여 한 번에 할당하나 변수 호출의 결과는 같습니다.
또 다른 뭉탱이 할당 방식은 파일을 읽어들이는 것입니다.
다음 예제를 보시죠.
shell script programming
array=$(cat test.txt)
echo ${array[0]}
위와 같이 'shell script programming' 이라는 문자열을 담고 있는 파일이 있다면, shell 커맨드인 'cat' 을 이용하여 값을 불러와 배열에 할당할 수 있습니다.
Shell Script를 짜다 보면 여러 파일에서 값을 불러와 배열에 저장하고 사용하는 경우가 종종 생기는 데 그 때 위 예제처럼 사용하면 됩니다.
그리고 이전에도 한 번 강조했던 내용이지만, 배열 변수에 값을 할당할 때도 '='(equal) 앞뒤로 절대 공백이 존재하면 안된다는 것을 명심하시기 바랍니다.
'3. OS이야기 > 03. Shell Script' 카테고리의 다른 글
[UNIX/LINUX] Shell Script 기본 - 3.for문 (2) 예제 (0) | 2014.04.29 |
---|---|
[UNIX/LINUX] Shell Script 기본 - 3.for문 (1) 기본 사용법 (0) | 2014.04.28 |
[UNIX/LINUX] Shell Script 기본 - 2.기본 문법 (1) 변수 할당, (2) 수치 계산 (0) | 2014.04.22 |
[UNIX/LINUX] Shell Script 기본 - 1.if문 (4) 예제 (0) | 2014.04.22 |
[UNIX/LINUX] Shell Script 기본 - 1.if문 (3) 논리 연산자 (0) | 2014.04.18 |