Bash에서 배열 정렬

MD Aminul Islam 2023년6월20일
  1. 버블 정렬을 사용하여 Bash에서 배열 정렬
  2. readarray 키워드를 사용하여 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[*]}

위의 예를 한 줄씩 설명하겠습니다.

  1. 먼저 배열 이름 MyArray를 선언했습니다.
  2. 그런 다음 echo ${MyArray[*]} 줄로 배열을 표시했습니다.
  3. 그런 다음 두 개의 루프를 만들고 버블 정렬을 구현했습니다. 이 루프 내에서 현재 요소가 다음 요소보다 큰지 여부를 찾는 조건을 만들었습니다.
  4. 조건이 true가 되면 배열의 이 두 요소 간에 교환 작업을 수행했습니다.
  5. 마지막으로 정렬이 완료되었을 때 배열을 표시했습니다. 위의 프로그램을 실행하면 아래와 같은 결과를 얻을 수 있습니다.
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 환경에서만 작동합니다.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

관련 문장 - Bash Array