HOWTO · Bash
Bash에서 배열 정렬
이 튜토리얼에서는 Bash에서 배열 정렬에 대해 설명합니다.
배열 정렬은 모든 프로그래밍 언어에서 매우 일반적인 작업입니다. Bash 스크립트에서는 두 가지 방법으로 이 작업을 수행할 수도 있습니다.
첫 번째는 정렬 알고리즘을 사용하고 두 번째는 readarray라는 Bash 스크립트의 내장 키워드를 사용합니다. 이 기사에서는 Bash 스크립트에서 배열을 정렬하는 방법을 보여줍니다.
또한 주제를 더 쉽게 설명하기 위해 몇 가지 예를 설명과 함께 볼 것입니다.
버블 정렬을 사용하여 Bash에서 배열 정렬
Bash 스크립트에서 버블 정렬, 병합 정렬 등과 같은 정렬 알고리즘을 사용하여 배열을 정렬할 수 있습니다. 아래 예에서는 배열 정렬을 위해 버블 정렬을 구현했습니다.
이 예제의 코드는 다음과 같습니다.
MyArray=(9 8 20 10 15)
echo "The original array is:"
echo ${MyArray[*]}
# We implemented the bubble sort here.
for ((i = 0; i<5; i++))
do
for((j = 0; j<5-i-1; j++))
do
if [ ${MyArray[j]} -gt ${MyArray[$((j+1))]} ]
then
# swap
temp=${MyArray[j]}
MyArray[$j]=${MyArray[$((j+1))]}
MyArray[$((j+1))]=$temp
fi
done
done
echo "The sorted array is:"
echo ${MyArray[*]}
위의 예를 한 줄씩 설명하겠습니다.
- 먼저 배열 이름
MyArray를 선언했습니다. - 그런 다음
echo ${MyArray[*]}줄로 배열을 표시했습니다. - 그런 다음 두 개의 루프를 만들고 버블 정렬을 구현했습니다. 이 루프 내에서 현재 요소가 다음 요소보다 큰지 여부를 찾는 조건을 만들었습니다.
- 조건이
true가 되면 배열의 이 두 요소 간에 교환 작업을 수행했습니다. - 마지막으로 정렬이 완료되었을 때 배열을 표시했습니다. 위의 프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
The original array is:
9 8 20 10 15
The sorted array is:
8 9 10 15 20
readarray 키워드를 사용하여 Bash에서 배열 정렬
영문자와 숫자가 혼합된 배열이 있다고 가정합니다. 이 배열을 정렬하려면 다른 방법을 찾아야 합니다.
이 배열에서 정렬을 수행하려면 문자의 ASCII 값을 비교해야 합니다.
Bash 스크립트에 내장된 키워드를 사용하면 단 한 줄의 코드로 이 작업을 수행할 수 있습니다. 키워드는 readarray입니다.
아래 예에서는 영문자와 숫자를 결합한 배열을 만들었습니다. readarray 키워드를 사용하여 배열을 정렬한 후 정렬된 배열을 표시했습니다.
우리 예제의 코드는 아래와 같습니다.
MyArray=(n a c b 6 7 5)
readarray -t MyArray < <(printf '%s\n' "${MyArray[@]}" | sort)
echo "The sorted list is: ${MyArray[*]}"
스크립트를 실행하면 아래와 같은 출력이 표시됩니다.
The sorted list is: 5 6 7 a b c n
이 글에 사용된 모든 코드는 Bash로 작성되었음을 알려드립니다. Linux Shell 환경에서만 작동합니다.