배열 요소 한 줄에 하나씩 출력하기
이 단계에서는 랩의 주요 주제인 배열 요소를 한 줄에 하나씩 출력하는 데 중점을 둡니다. Bash 에서 이를 달성하기 위한 다양한 방법을 살펴보겠습니다.
방법 1: For 루프 사용
배열 요소를 한 줄에 하나씩 출력하는 가장 간단한 방법은 for 루프를 사용하는 것입니다.
print_array_loop.sh라는 새 파일을 생성합니다.
#!/bin/bash
## 샘플 배열 생성
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Printing planets using a for loop:"
for planet in "${planets[@]}"; do
echo "$planet"
done
- 파일을 저장하고 실행 가능하게 만듭니다.
chmod +x /home/labex/project/print_array_loop.sh
- 스크립트를 실행합니다.
./print_array_loop.sh
출력은 각 행성에 대해 별도의 줄에 표시됩니다.
Printing planets using a for loop:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
방법 2: printf 명령 사용
printf 명령은 echo와 함께 루프를 사용하는 것보다 더 효율적인 경우가 많습니다.
print_array_printf.sh라는 새 파일을 생성합니다.
#!/bin/bash
## 샘플 배열 생성
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Printing planets using printf:"
printf "%s\n" "${planets[@]}"
- 파일을 저장하고 실행 가능하게 만듭니다.
chmod +x /home/labex/project/print_array_printf.sh
- 스크립트를 실행합니다.
./print_array_printf.sh
출력은 이전 방법과 동일합니다.
Printing planets using printf:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
방법 3: IFS 변수 사용
IFS(Internal Field Separator) 변수를 사용하여 배열 요소가 출력되는 방식을 제어할 수 있습니다.
print_array_ifs.sh라는 새 파일을 생성합니다.
#!/bin/bash
## 샘플 배열 생성
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Printing planets using IFS:"
## 임시로 IFS를 개행 문자로 변경
old_IFS="$IFS"
IFS=$'\n'
echo "${planets[*]}" ## 참고: IFS와 함께 @ 대신 * 사용
IFS="$old_IFS" ## 원래 IFS 복원
- 파일을 저장하고 실행 가능하게 만듭니다.
chmod +x /home/labex/project/print_array_ifs.sh
- 스크립트를 실행합니다.
./print_array_ifs.sh
출력은 다시 각 행성을 별도의 줄에 표시합니다.
Printing planets using IFS:
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
방법 4: 여러 기술 결합
이러한 기술을 보다 포괄적인 예제에서 결합해 보겠습니다.
print_array_combined.sh라는 새 파일을 생성합니다.
#!/bin/bash
## 샘플 배열 생성
planets=("Mercury" "Venus" "Earth" "Mars" "Jupiter" "Saturn" "Uranus" "Neptune")
echo "Using a for loop with index:"
for i in "${!planets[@]}"; do
echo "Planet $i: ${planets[$i]}"
done
echo -e "\nUsing printf with formatting:"
printf "Planet: %s - %d letters\n" "${planets[@]}" "${#planets[@]}"
echo -e "\nSorted planets:"
printf "%s\n" "${planets[@]}" | sort
- 파일을 저장하고 실행 가능하게 만듭니다.
chmod +x /home/labex/project/print_array_combined.sh
- 스크립트를 실행합니다.
./print_array_combined.sh
출력은 배열 요소를 형식화하고 출력하는 다양한 방법을 보여줍니다.
Using a for loop with index:
Planet 0: Mercury
Planet 1: Venus
Planet 2: Earth
Planet 3: Mars
Planet 4: Jupiter
Planet 5: Saturn
Planet 6: Uranus
Planet 7: Neptune
Using printf with formatting:
Planet: Mercury - 8 letters
Planet: Venus - 5 letters
Planet: Earth - 5 letters
Planet: Mars - 4 letters
Planet: Jupiter - 7 letters
Planet: Saturn - 6 letters
Planet: Uranus - 7 letters
Planet: Neptune - 7 letters
Sorted planets:
Earth
Jupiter
Mars
Mercury
Neptune
Saturn
Uranus
Venus
각 방법에는 장점이 있습니다.
- for 루프는 초보자에게 가장 읽기 쉽습니다.
- printf 방법은 큰 배열에 더 효율적입니다.
- IFS 방법은 간결하지만 직관적이지 않을 수 있습니다.
- 결합된 기술은 풍부한 형식 옵션을 제공할 수 있습니다.
특정 사용 사례 및 코딩 스타일에 가장 적합한 방법을 선택하십시오.