안녕하세요, MJ입니다. 오늘은 고급 쉘 스크립트의 다양한 기능에 대해 알아보겠습니다. 쉘 스크립트는 리눅스에서 자동화된 작업을 수행하는 데 매우 유용한 도구입니다. 이번 포스팅에서는 조건문, 반복문, 함수의 사용법과 실제로 유용한 스크립트를 작성하는 방법을 살펴보겠습니다.
1. 조건문의 이해
조건문은 특정 조건에 따라 다른 명령을 실행할 수 있게 해줍니다. 쉘 스크립트에서는 if
, else
, elif
구문을 사용하여 조건문을 작성합니다. 기본적인 형식은 다음과 같습니다:
if [ 조건 ]; then
명령어
else
다른 명령어
fi
예를 들어, 사용자가 입력한 숫자가 짝수인지 홀수인지 확인하는 스크립트를 작성해 보겠습니다:
#!/bin/bash
echo "숫자를 입력하세요: "
read number
if [ $((number \% 2)) -eq 0 ]; then
echo "$number는 짝수입니다."
else
echo "$number는 홀수입니다."
fi
이 스크립트를 실행하면 사용자가 입력한 숫자에 따라 다음과 같은 결과가 나타납니다:
숫자를 입력하세요:
4
4는 짝수입니다.
2. 반복문의 활용
반복문은 특정 명령어를 여러 번 실행할 수 있게 해줍니다. 쉘 스크립트에서는 for
, while
, until
구문을 사용하여 반복문을 작성합니다. 다음은 for
반복문의 기본적인 형식입니다:
for 변수 in 리스트; do
명령어
done
예를 들어, 1부터 5까지의 숫자를 출력하는 스크립트를 작성해 보겠습니다:
#!/bin/bash
for i in {1..5}; do
echo "$i"
done
이 스크립트를 실행하면 다음과 같은 결과가 나타납니다:
1
2
3
4
5
2.1 while 반복문 예제
while
반복문을 사용하여 사용자가 0을 입력할 때까지 숫자를 계속 입력받아 합계를 계산하는 예제를 살펴보겠습니다:
#!/bin/bash
sum=0
echo "숫자를 입력하세요 (0 입력 시 종료): "
while true; do
read number
if [ $number -eq 0 ]; then
break
fi
sum=$((sum + number))
done
echo "합계는 $sum입니다."
이 스크립트를 실행하면 사용자가 입력한 숫자들의 합계를 계산하여 출력합니다.
3. 함수의 정의와 사용
함수는 특정 작업을 수행하는 명령어 집합으로, 재사용성을 높이고 코드를 깔끔하게 유지하는 데 도움을 줍니다. 함수의 기본적인 형식은 다음과 같습니다:
function_name() {
명령어
}
예를 들어, 두 숫자의 합을 계산하는 함수를 작성해 보겠습니다:
#!/bin/bash
add() {
echo "두 숫자를 입력하세요: "
read a b
sum=$((a + b))
echo "합은 $sum입니다."
}
add
이 스크립트를 실행하면 두 숫자의 합을 계산하여 출력합니다.
3.1 함수와 반복문 결합
함수와 반복문을 결합하여 여러 숫자의 합을 계산하는 예제를 작성해 보겠습니다:
#!/bin/bash
sum=0
add() {
sum=$((sum + $1))
}
for i in {1..5}; do
add $i
done
echo "1부터 5까지의 합은 $sum입니다."
이 스크립트를 실행하면 1부터 5까지의 합을 출력합니다.
4. 실용적인 스크립트 작성
위에서 배운 조건문, 반복문, 함수를 이용하여 실용적인 스크립트를 작성해 보겠습니다. 예를 들어, 특정 디렉토리의 파일 수를 세고, 그 결과를 출력하는 스크립트를 작성할 수 있습니다:
#!/bin/bash
count_files() {
echo "디렉토리의 파일 수를 세는 중입니다..."
count=$(ls -1 | wc -l)
echo "파일 수: $count"
}
cd /path/to/directory
count_files
이 스크립트를 실행하면 지정한 디렉토리의 파일 수를 세어 출력합니다.
5. 결론
고급 쉘 스크립트는 리눅스에서 효율적으로 작업을 자동화하는 데 매우 유용합니다. 조건문, 반복문, 함수의 활용을 통해 복잡한 로직을 쉽게 구현할 수 있습니다. 이번 포스팅을 통해 고급 쉘 스크립트의 기초를 이해하고, 실무에 적용해 보시기 바랍니다.
읽어주셔서 감사합니다. 다음 포스팅에서 만나요!
댓글
댓글 쓰기