Linux의 Bash 쉘 스크립트에서 배열(Array)을 선언하고 값을 할당 및 접근하는 방법을 알아보겠습니다.
또한, 배열의 길이를 확인하거나 어떤 객체가 배열 내에 존재하는지 포함여부를 확인하는 방법을 소개합니다.
1. 배열 선언 및 할당
배열은 다음과 같이 선언 및 할당할 수 있습니다. Index 별로 객체를 할당합니다.
#!/bin/bash
FRUITS[0]="Apple"
FRUITS[1]="Banana"
FRUITS[2]="Kiwi"
FRUITS[3]="Grape"
Bash에서는 아래와 같은 형태로도 배열을 정의할 수 있습니다.
#!/bin/bash
FRUITS=("Apple", "Banana", "Kiwi", "Grape")
2. 배열 접근 방법
배열에 접근할 때는 ${ARRAY_NAME[Index]}
로 접근합니다.
다음은 각각의 요소들을 출력하는 예제입니다.
#!/bin/bash
FRUITS[0]="Apple"
FRUITS[1]="Banana"
FRUITS[2]="Kiwi"
FRUITS[3]="Grape"
echo "First Index: ${FRUITS[0]}"
echo "Second Index: ${FRUITS[1]}"
echo "Third Index: ${FRUITS[2]}"
echo "Fourth Index: ${FRUITS[3]}"
Output:
$ bash example.sh
First Index: Apple
Second Index: Banana
Third Index: Kiwi
Fourth Index: Grape
2.1 배열의 모든 요소 접근
배열의 모든 요소를 얻으러면 ${ARRAY_NAME[*]}
또는 ${ARRAY_NAME[@]}
처럼, Index 위치에 *
또는 @
를 입력하시면 됩니다.
다음 예제와 같이, ${ARRAY_NAME[* or #]}
는 배열의 모든 요소를 리턴합니다.
#!/bin/bash
FRUITS[0]="Apple"
FRUITS[1]="Banana"
FRUITS[2]="Kiwi"
FRUITS[3]="Grape"
echo "All Items: ${FRUITS[*]}"
echo "All Items: ${FRUITS[@]}"
Output:
$ bash example.sh
All Items: Apple Banana Kiwi Grape
All Items: Apple Banana Kiwi Grape
2.2 반복문으로 배열의 요소 접근
반복문으로 배열의 모든 요소를 순회하면서 어떤 작업을 수행할 수 있습니다.
아래 예제는 반복문으로 배열의 모든 요소를 더하고, 총합을 출력합니다.
#!/bin/bash
arr=(10 20 30 40 50)
sum=0
for i in ${arr[@]}
do
sum=`expr $sum + $i`
done
echo $sum
Output:
$ bash example.sh
150
3. 배열 길이
배열 길이는 ${#ARRAY_NAME[*]}"
또는 ${#ARRAY_NAME[@]}"
처럼, 배열의 모든 요소를 의미하는 ARRAY_NAME[@]
앞에 #
을 입력하시면 됩니다.
다음은 배열 길이를 출력하는 예제입니다.
#!/bin/bash
FRUITS[0]="Apple"
FRUITS[1]="Banana"
FRUITS[2]="Kiwi"
FRUITS[3]="Grape"
echo "Array length: ${#FRUITS[*]}"
echo "Array length: ${#FRUITS[@]}"
Output:
Array length: 4
Array length: 4
4. 배열에 특정 요소가 존재하는지 확인
For 루프를 이용하여 배열의 모든 요소를 순회하면서 특정 요소가 존재하는지 If문으로 확인할 수 있습니다.
다음 예제는 반복문과 조건문으로 특정 요소가 배열에 존재하는지 확인하는 코드입니다.
포함 여부를 판단하는 코드들을 in_array
라는 함수로 정의하였습니다. 찾으려는 요소와 모든 배열 요소들을 함수의 인자로 전달받습니다.
#!/bin/bash
function in_array {
ARRAY=$2
for e in ${ARRAY[*]}
do
if [[ "$e" == "$1" ]]
then
return 0
fi
done
return 1
}
FRUITS[0]="Apple"
FRUITS[1]="Banana"
FRUITS[2]="Kiwi"
FRUITS[3]="Grape"
# Check if it contains 'Orange'
if in_array "Orange" "${FRUITS[*]}"
then
echo "Found: Orange"
else
echo "Not found: Orange"
fi
# Check if it contains 'Kiwi'
if in_array "Kiwi" "${FRUITS[*]}"
then
echo "Found: Kiwi"
else
echo "Not found: Kiwi"
fi
Output:
$ bash example.sh
Not found: Orange
Found: Kiwi
References
Related Posts
- Bash Shell - 문자열에서 마지막 문자 N개 제거
- Bash Shell - 문자열에서 첫번째 문자 N개 제거
- Bash Shell - 실행 시간 측정 방법
- Bash Shell - 나눗셈에서 버림, 올림, 반올림 처리
- Bash Shell - 숫자가 양수인지 음수인지 확인하는 방법
- Bash Shell - 자신의 스크립트 파일 이름 가져오기
- Bash Shell - 문자열 출력 방법(echo, printf)
- Bash Shell - seq 명령어로 반복문 구현 및 예제
- Bash Shell - File 테스트 연산자
- Bash Shell - 무한 루프 (Infinite loop)
- Bash Shell - 숫자 비교 연산자
- Bash Shell - 문자열 비교 연산자
- Bash Shell - 대문자, 소문자로 변환 (Uppercase, Lowercase)
- Bash Shell - 스트립트를 root로 실행했는지 확인
- Bash Shell - 명령어 실행 결과를 변수에 저장
- Bash Shell - select로 선택 메뉴 구현
- Bash Shell - 변수가 정의되었는지 확인하는 방법
- Bash Shell - sleep 함수, 특정 시간 멈추기
- Bash Shell - 파일이 존재하는지 확인
- Bash Shell - 문자열 자르기 (substring, split)
- Bash Shell - 날짜, 시간 가져오기
- Bash Shell - Case 조건문
- Bash Shell - 파일 읽는 방법
- Bash Shell - 사용자로부터 입력 받기
- Bash Shell - 문자열을 연결하는 방법
- Bash Shell - 파일 생성 및 문자열 추가
- Bash Shell - 숫자 변수 증가/감소 시키기
- Bash Shell - 배열 할당, 길이, 객체 포함 여부 확인
- Bash Shell - 문자열 비교, 문자열 포함 여부 확인
- Bash Shell - 변수 선언, 할당
- Bash Shell - 조건문(if-else)
- Bash Shell - 숫자 연산 (더하기, 빼기, 곱하기, 나누기)
- Bash Shell - 반복문(for, while, until loop)
- Bash Shell - Command Line으로 전달된 인자 받기
- Bash Shell - 함수(Function)