현재의 소프트웨어 개발과 시스템 관리 분야에서 자동화는 효율성을 높이고 오류를 줄이는 핵심 요소입니다. Linux 및 Unix 사용자들에게는 Shell 스크립트가 이러한 작업을 자동화하는 강력하고 유연한 방법을 제공합니다. 본 문서에서는 Shell 스크립트의 개념부터 기본 작성법, 고급 기능 및 실제 활용 사례까지 다룹니다.
Shell 스크립트란?
Shell 스크립트는 일련의 명령어를 파일에 기록하여 Shell이 해석하고 실행할 수 있는 스크립트 언어입니다. 이를 통해 반복 작업을 단순화하고 복잡한 프로세스를 재사용 가능한 모듈로 캡슐화할 수 있습니다.
Shell 스크립트 사용 이유
- 자동화: 데이터베이스 백업, 로그 정리 등의 일상적인 작업을 자동으로 수행할 수 있습니다.
- 배치 처리: 여러 명령어를 동시에 실행하여 시간을 절약할 수 있습니다.
- 사용자 정의: 특정 요구 사항에 맞춰 스크립트를 작성하여 개인화된 솔루션을 제시할 수 있습니다.
첫 번째 Shell 스크립트 작성하기
스크립트 파일 생성
먼저, 텍스트 파일을 만들어 스크립트 파일로 사용합니다. 예를 들어 hello_world.sh로 이름을 지정할 수 있습니다.
touch hello_world.sh
Shebang 추가
스크립트 파일의 첫 번째 줄에는 Shebang(#!)을 추가하여 사용할 Shell 인터프리터를 지정합니다. Bash를 사용한다면 다음과 같이 작성합니다:
#!/bin/bash
간단한 명령어 작성
스크립트 파일에 실행할 명령어를 추가합니다. 예를 들어 터미널에 "Hello, World!" 메시지를 출력하는 명령어는 다음과 같습니다:
echo "안녕하세요, 세계!"
실행 권한 부여
스크립트 파일을 실행 가능하게 하려면 다음 명령어를 사용하여 권한을 부여합니다:
chmod +x hello_world.sh
스크립트 실행
마지막으로, 아래와 같이 스크립트를 실행할 수 있습니다:
./hello_world.sh
변수와 매개변수 전달
변수 정의
Shell 스크립트에서 변수를 정의하는 것은 매우 쉽습니다. 타입 선언 없이 바로 값을 할당할 수 있습니다:
인사말="안녕하세요"
대상="세계"
echo "$인사말, $대상!"
사용자 입력 읽기
read 명령어를 사용하여 사용자로부터 입력을 받을 수 있습니다:
echo "이름을 입력해주세요:"
read 사용자이름
echo "안녕하세요, $사용자이름!"
매개변수 전달
위치 매개변수를 사용하여 스크립트에 데이터를 전달할 수 있습니다:
echo "첫 번째 매개변수: $1"
echo "두 번째 매개변수: $2"
호출 예시:
./스크립트.sh 매개값1 매개값2
조건문과 반복 구조
조건문
조건에 따라 다른 코드 블록을 실행하는 if 문을 사용할 수 있습니다:
if [ "$USER" = "root" ]; then
echo "관리자 계정입니다."
else
echo "일반 사용자 계정입니다."
fi
반복 구조
주로 사용되는 반복 구조에는 for 루프와 while 루프가 있습니다:
# For 루프 예제
for 번호 in 1 2 3 4 5
do
echo "숫자: $번호"
done
# While 루프 예제
카운터=0
while [ $카운터 -lt 5 ]
do
echo "카운터: $카운터"
((카운터++))
done
실제 사용 사례
정기적 백업
매일 새벽 2시에 특정 디렉토리를 백업하려면 다음과 같은 스크립트를 작성하고 crontab에 등록할 수 있습니다:
#!/bin/bash
백업디렉토리="/백업경로"
타임스탬프=$(date +"%Y%m%d_%H%M%S")
cp -r /중요데이터 "$백업디렉토리/백업_$타임스탬프"
디스크 사용량 모니터링
디스크 사용률이 80% 이상일 경우 경고 메일을 보내는 스크립트는 다음과 같습니다:
#!/bin/bash
디스크사용률=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
if [ "$디스크사용률" -gt 80 ]; then
echo "디스크 사용량이 80%를 초과했습니다." | mail -s "디스크 사용량 경고" 관리자@example.com
fi