[쉘 스크립트] 배열

배열 선언 및 출력

쉘 스크립트의 배열은 () 안에 들어가며 문자열로 인식된다. 자동으로 인덱스가 0부터 붙기 시작한다.

arr이라는 배열이 있을 때, echo $arr을 하면 첫번째 원소를 출력한다. n번째 원소를 선택하고 싶다면 ${arr[n]} 형식으로 사용하며, n자리에 @을 넣을 시 배열의 모든 원소를 의미한다.

#!/bin/sh
#arr.sh

arr=(A B C D 1 2 3 4)

echo "echo \$arr"
echo $arr

echo -e "\necho \${arr[3]}"
echo ${arr[3]}

echo -e  "\necho \${arr[@]}"
echo ${arr[@]}

echo -e "\nfor문"
for i in ${arr[@]}
do
        echo $i
done
exit 0

image

다른 문자열을 배열로 지정하거나, 명령어의 결과를 문자열로 지정할 수도 있다.

#!/bin/sh
#arr2.sh

arr1=(`date`)
echo "${arr1[@]}"

tmp="This is String"
arr2=($tmp)
echo -e "\n${arr2[@]}"

exit 0

image

다음과 같이 직접 인덱스별로 배열 원소값을 정의하여 불연속적인 배열을 만들 수도 있다.

#!/bin/sh
#arr4.sh

arr[0]="1"
arr[2]="2"
arr[4]="3"

for((i=0;i<5;i++))
do
        echo "$i번째 원소:${arr[$i]}"
done

exit 0

image

원소 추가

배열에 += 을 사용하여 배열의 끝에 원소를 추가할 수 있다. 이 때, 추가되는 원소가 하나여도 ()로 배열화하여 추가해야 한다.

#!/bin/sh
#arr3.sh

arr=(1 2 3 4)
arr+=(5 6 7)
echo ${arr[@]}

exit 0

image-20210820011935176

인덱스가 불연속적이여도 배열의 가장 끝에 추가된다.

#!/bin/sh
#arr4.sh
arr[0]="1"
arr[2]="2"
arr[4]="3"
arr+=(4)

for((i=0;i<6;i++))
do
        echo "$i번째 원소:${arr[$i]}"
done

exit 0

image

카테고리:

업데이트:

댓글남기기