Unix / Linux - Using Shell Arrays
안녕하세요, 야심찬 프로그래머 여러분! Unix와 Linux 셸 스크립팅에서 배열을 사용하는 우리의 수업에欢迎使用합니다. 이 흥미로운 여정을 안내해 드리는 것을 매우 기쁩니다. 컴퓨터 과학을 가르치는 지금까지의 경험을 바탕으로, 배열을 마스터하면 프로그래밍 모험의 새로운 세계로의扉을 열 수 있을 것이라 확신합니다. 그麼, 시작해 보겠습니다!
什么是数组?
자세히 알기 전에, 배열이 무엇인지 이해해 보겠습니다. 여러 가지 과일이 있을 때, 그것들을 부엌 곳곳에 흩어 놓지 않고 예쁜 과일 바스켓에 정리해 두는 것을 상상해 보세요. 이것이 프로그래밍에서 배열의 개념입니다 - 동일한 유형의 여러 항목을 깔끔하게 정리하여 쉽게 접근할 수 있는 컨테이너입니다.
배열 값 정의
Unix/Linux 셸 스크립팅에서 배열을 정의하는 것은 매우 간단합니다. 간단한 예제로 시작해 보겠습니다:
fruits=("apple" "banana" "cherry" "date")
여기서 우리는 fruits
라는 이름의 배열을 생성했고, 네 개의 요소를 포함하고 있습니다. 이것은 우리의 가상의 과일 바스켓과 같습니다! 각 요소는 따로 쌍따уголь형 따위로 감싸인 문자열로, 공백으로 구분됩니다.
하지만, 그 이상도 있습니다! 배열 요소를 하나씩 정의할 수도 있습니다:
vegetables[0]="carrot"
vegetables[1]="broccoli"
vegetables[2]="spinach"
이 경우, 우리는 각 요소의 인덱스(위치)를 수동으로 지정하고 있습니다. 기억하세요, 대부분의 프로그래밍 언어에서처럼 셸 스크립팅에서도 배열 인덱스는 0에서 시작하며, 1이 아닙니다. 이는 많은 초보자를 혼동시키는 특이점이므로 기억해 두세요!
배열 인덱싱을 기억하는 재미있는 방법
저는 자주 학생들에게 이렇게 설명합니다. 그들은 경주에 참가하고 있습니다. 시작선에 있는 사람은 번호 1이 아니라 번호 0입니다! 이것은 이상하지만, 배열이 0번 인덱스에서 시작하는 것을 기억하는 데 도움이 됩니다.
배열 값 접근
이제 가상의 바스켓을 채웠으니, 어떻게 항목을 꺼낼까요? 함께 탐구해 보겠습니다!
개별 요소 접근
특정 요소에 접근하려면 인덱스를 사용합니다:
echo ${fruits[2]}
이 명령은 cherry
를 출력합니다.
왜냐하면 cherry
는 인덱스 2에 있기 때문입니다 (0부터 시작하기 때문에).
모든 요소 접근
모든 과일을 한 번에 볼 수 있을까요? @
기호를 사용할 수 있습니다:
echo ${fruits[@]}
이는 apple banana cherry date
를 표시합니다.
배열 길이 접근
배열에 얼마나 많은 항목이 있는지 궁금하시겠ですね? 다음과 같이 확인할 수 있습니다:
echo ${#fruits[@]}
이 명령은 4
를 출력합니다.
배열 이름 앞의 #
기호는 배열의 길이를 줍니다.
실용적인 예제
지식을 실践에 바로 적용해 보겠습니다!
예제 1: 여러 사용자에 대한 인사
users=("Alice" "Bob" "Charlie")
for user in "${users[@]}"
do
echo "Hello, $user!"
done
이 스크립트는 다음과 같은 출력을 생성합니다:
Hello, Alice!
Hello, Bob!
Hello, Charlie!
여기서 우리는 for
루프를 사용하여 배열을 순회하며 각 사용자에게 인사를 합니다. 친절한 로봇이 항상 인사를 잊지 않는 것처럼!
예제 2: 파일 크기 합산
files=("document.txt" "image.jpg" "script.sh")
total_size=0
for file in "${files[@]}"
do
size=$(stat -f%z "$file")
total_size=$((total_size + size))
done
echo "Total size of files: $total_size bytes"
이 스크립트는 여러 파일의 크기를 계산합니다. 여러 파일의 크기를 빠르게 합산할 때 유용합니다.
고급 배열 기술
기본적인 내용을 다루고 나서, 더 고급적인 기술을 탐구해 보겠습니다!
배열 슬라이스
배열의 일부를 추출할 수 있습니다:
colors=("red" "green" "blue" "yellow" "purple")
echo ${colors[@]:1:3}
이는 green blue yellow
를 출력합니다.
여기서 1:3
은 "인덱스 1에서 시작하여 3개의 요소를 제공한다"는 의미입니다.
배열에 요소 추가
기존 배열에 요소를 추가할 수 있습니다:
fruits+=("elderberry")
echo ${fruits[@]}
이제 우리의 과일 배열에 "elderberry"가 포함됩니다.
배열에서 요소 제거
요소를 제거하는 것은 좀 더 복잡합니다. unset
명령을 사용할 수 있습니다:
unset fruits[1]
echo ${fruits[@]}
이는 우리의 과일 배열에서 두 번째 요소(인덱스 1)를 제거합니다.
일반 배열 메서드
Unix/Linux 셸 스크립팅에서 일반적인 배열 연산을 요약한 표를 제공합니다:
연산 | 문법 | 설명 |
---|---|---|
배열 정의 | array=("elem1" "elem2" "elem3") |
새로운 배열 생성 |
요소 접근 | ${array[index]} |
지정된 인덱스의 요소 추출 |
모든 요소 접근 | ${array[@]} |
모든 요소 추출 |
배열 길이 | ${#array[@]} |
배열의 요소 수 반환 |
요소 추가 | array+=("new_elem") |
새로운 요소 추가 |
요소 제거 | unset array[index] |
지정된 인덱스의 요소 제거 |
배열 슬라이스 | ${array[@]:start:count} |
배열의 일부 추출 |
결론
축하합니다! Unix/Linux 셸 스크립팅에서 배열을 사용하는 첫 걸음을 냈습니다. 우리는 배열을 정의하고 그 값에 접근하며, 심지어 몇 가지 고급 기술도 다루었습니다. 연습이 완벽을 이루는 열쇠이므로, 자신의 스크립트에서 이 개념들을 실험해 보지 마세요.
배열은 매우 다재다능한 도구로, 많은 프로그래밍 작업을 간소화할 수 있습니다. 사용자 목록 관리, 여러 파일 처리, 데이터 조직화 등 다양한 용도로 사용할 수 있으며, 배열은 당신의 코딩 여정에서 충실한 동반자가 될 것입니다.
마무리하면서, 유명한 컴퓨터 과학자 Alan Kay의 말을 떠올립니다: "Simple things should be simple, complex things should be possible." 배열은 이 원칙을 완벽하게 thể현합니다 - 사용하기 쉬우면서도 복잡한 것을 가능하게 합니다.
계속 코딩하고, 탐구하며, 가장 중요한 것은 배열을 즐기세요! 그들은 단순한 데이터 구조가 아니라, 당신의 미래의 프로그래밍 대작의 건축 블록입니다. 다음 번까지, 행복한 스크립팅을 기원합니다!
Credits: Image by storyset