본문 바로가기
IT/리눅스 이론

리눅스 배열 사용법 규칙 및 기초 예제 실습 - Linux shell script array

by 꾸꾸웍스 2023. 1. 6.
반응형

리눅스 배열 사용법 규칙 및 예제 실습 썸네일 사진
리눅스 배열 사용법 규칙 및 예제 실습

 

 

리눅스 배열에 익숙하지 않거나 배열에 대해 잘 모른다면 아래 내용을 통해 배열을 쉽게 터득하고 예제 실습을 통해 쉽게 배열을 배울 수 있습니다. 아래 내용은 리눅스 배열에 대한 개념과 리눅스 배열 선언, 배열 출력, 배열 삭제의 기본 규칙들을 가지고 리눅스 쉘 또는 리눅스 쉘스크립트에서 예제를 쉽게 따라 할 수 있습니다.

 

 

※ 목차 구성
1) 리눅스 배열이란?
   - 배열, 원소, 인덱스
2) 리눅스 배열 선언
3) 리눅스 배열 출력
4) 리눅스 배열 삭제

 

 

 

리눅스 배열이란?

리눅스에서 제공하는 쉘은 C언어로 기반으로 만들어진 프로그래밍 툴로 배열(arry)은 프로그래밍 언어에서 지원하는 자료구조 중 하나입니다. 순서대로 번호가 붙은 원소들이 연속적인 형태로 구성된 구조를 배열이라고 하며 원소에 붙은 번호를 흔히 인덱스(index)라고 부릅니다. 

 

 

리눅스 배열 설명 사진
리눅스 배열 개념

 

위 사진의 예시처럼 과일 바구니에 사과, 바나나, 멜론, 수박이 있다고 가정한다면 사과, 바나나, 멜론, 수박을 원소라고 부릅니다. 이렇게 원소들이 연속적인 형태로 구성된 과일바구니를 배열이라고 부르며 과일바구니에 과일이 쌓인 순서대로 원소에 붙은 번호를 인덱스라고 합니다.

 

 

 

반응형

 

 

리눅스 배열 선언

프로그래밍 언어에서 지원하는 자료구조 중 하나인 배열은 많은 프로그래밍 언어에서 사용되지만 리눅스 쉘과 쉘스크립트도 사용법이 비슷하지만 특정 규칙들이 존재합니다.

 

배열변수이름=(원소1 원소2 원소3 ... 원소n)

보통 배열을 선언할 때는 변수를 지정하는 방법과 동일하지만 원소를 선언할 때는 반드시 소괄호로 선언을 하고 공백으로 원소를 구분합니다. 쉼표를 사용하면 원소로 포함되기 때문에 원소를 구분할 때는 공백으로 구분합니다.

 

▼ (배열의 원소 선언) 쉼표 사용과 미사용의 차이

root@server # number=(1 2 3 4)

root@server # echo ${number[1]}
2

-----------------------------------
root@server # number=(1, 2, 3, 4)

root@server # echo ${number[1]}
2,

 

 

배열변수이름=([인덱스]=원소1 [인덱스]=원소2 [인덱스]=원소3 ... [인덱스]=원소n)

또한 배열의 원소들을 선언할 때 원소의 번호 즉, 인덱스의 번호를 직접 선언할 수 있습니다.

 

▼ 원소의 인덱스를 다르게 선언한 결과

root@server # number=([0]=1 [1]=2 [2]=3 [3]=4)

root@server # echo ${number[1]}
2
-----------------------------------
root@server # number=([3]=1 [2]=2 [1]=3 [0]=4)

root@server # echo ${number[1]}
3
-----------------------------------
root@server # number=([99]=1 [17]=2 [100]=3 [6]=4)

root@server # echo ${number[100]}
3

 

 

 

 

리눅스 배열 출력

출력명령어 ${배열변수이름[인덱스]}

리눅스 배열을 선언하였다면 배열에 들어있는 원소들을 호출 및 출력하기 위해서는 출력명령어를 이용하여 변수를 치환하는 달러표시와 함께 중괄호를 사용하고 그사이에 대괄호를 사용하여 원소에 붙은 번호 인덱스를 입력하여 출력합니다.

 

▼원소 출력 및 원소 선언 후 원소 출력

root@server # number=(1 2 3 4)

root@server # echo ${number[0]}
1

root@server # printf ${number[1]}
2
-------------------------------------
root@server # number[0]=3
root@server # number[1]=2

root@server # echo ${number[0]}
3

root@server # echo ${number[1]}
2

리눅스 배열을 선언 후 원소를 출력할 때는 출력명령어를 사용하여 출력합니다. 대표적인 출력명령어 echo 명령어와, printf 명령어를 이용하여 출력하는 예시입니다. 또한 꼭 배열을 나열하여 선언하지 않아도 점선 아래 예시와 같이 배열변수이름, 원소의 값, 인덱스의 값을 임의로 선언하여 출력할 수 있습니다.

 

 

출력명령어 ${#배열변수이름[@]}
출력명령어 ${#배열변수이름[인덱스]}

위 명령어는 인덱스에 @를 사용하여 배열의 원소의 개수를 알아볼 수 있고 인덱스의 번호를 넣어서 배열의 원소 길이를 알아볼 수 있습니다.

 

root@server # office=(pen desk computer)

root@server # echo ${#office[@]}
3

root@server # echo ${#office[2]}
8

office 배열변수에 pen, desk, computer 3개의 원소가 있습니다. @를 사용하여 배열의 원소의 개수는 3개이며 원소의 인덱스 2를 사용하여 computer의 원소의 길이는 8입니다.

 

리눅스 배열 인덱스

리눅스 쉘 또는 쉘스크립트에서 배열을 선언하고 배열을 출력할 때 인덱스는 0부터 시작합니다. 하지만 아래 예시처럼 인덱스를 사용하지 않으면 0으로 인식하여 인덱스가 0인 원소를 호출하여 출력합니다.

 

root@server # number=(1 2 3 4)

root@server # echo ${number[0]} ${number[1]} ${number[2]} ${number[3]}
1 2 3 4

root@server # echo ${number} ${number} ${number} ${number}
1 1 1 1

 

 

 

 

리눅스 배열 삭제

리눅스 쉘 또는 쉘스크립트 내 선언한 배열을 삭제할 수 있고 배열 내 특정 원소를 삭제할 수 있습니다.

 

unset 배열변수이름

 

▼ number 배열 변수를 삭제하는 예시

root@server # number=(1 2 3 4)

root@server # echo ${number[1]}
2

root@server # unset number

root@server # echo ${number[1]}

 

 

unset 배열변수이름[인덱스]

 

▼ 배열 내 특정 원소를 삭제하는 예시

root@server # number=(1 2 3 4)

root@server # echo ${number[1]}
2

root@server # unset number[1]

root@server # echo ${number[1]}

root@server # echo ${number[2]}
3

 

 

 

 

반응형
그리드형

댓글