Bash 스크립트 소개: 문법, 변수, 명령어
1. Bash 스크립트란?
만약 "왜 내가 똑같은 명령어를 계속 반복해야 하지?" 라고 생각한 적이 있다면, 축하합니다! 이제 Bash 스크립트를 배울 준비가 되었어요! Bash 스크립트는 Linux에서 명령어의 시퀀스를 파일 하나에 작성하여 작업을 자동화하는 방법이에요. Bash (Bourne Again Shell)는 그저 쉘이 아니라, 관리자, 프로그래머, 그리고 시스템을 자신을 위해 일하도록 만드는 모든 사람들을 위한 다용도 도구에요.
Bash 스크립트의 장점
- 시간 절약: 한 번 작성해서 여러 번 실행해봐요.
- 작업의 반복 가능성: 스크립트는 매 실행마다 동일하게 작동해요 (물론, 제대로 작성되었다는 가정 하에요).
- 루틴 작업 자동화: 백업, 리소스 모니터링, 또는 파일 관리를 위한 커스텀 명령어를 만들어보세요.
2. 스크립트 작성 기본
그러면 시작해보자. Bash 스크립트는 명령어 집합이 들어있는 단순한 텍스트 파일이야. 하지만 Linux가 이 파일이 단순한 일기장 내용이 아니라 스크립트라는 걸 이해하려면, 특정 규칙을 따라야 해.
1단계: 파일 이름과 형식
Bash 스크립트는 보통 .sh
확장자를 가지고 있어 (필수는 아냐). 예를 들어:
hello_world.sh
backup_script.sh
2단계: 꼭 필요한 첫 줄
모든 bash 스크립트는 다음 줄로 시작해야 해:
#!/bin/bash
이 줄은 쉐뱅(shebang)이라고 불리고, 시스템에게 스크립트를 실행하려면 /bin/bash
인터프리터를 사용해야 한다고 알려줘. 이 줄이 없으면, 시스템은 네 스크립트를 보고 슬픈 한숨을 내쉬고 아무것도 안 할 거야.
3단계: 간단한 스크립트
이제 "안녕, 세상!"이라는 텍스트를 출력하는 스크립트를 만들어서 실행해보자! 뭐, 해보는데 손해볼 건 없잖아.
파일 생성:
nano hello_world.sh
다음 줄 추가:
#!/bin/bash echo "안녕, 세상!"
파일을 실행 가능하게 만들기:
chmod +x hello_world.sh
스크립트 실행:
./hello_world.sh
화면에 다음과 같이 보일 거야:
안녕, 세상!
3. 변수 사용하기
변수는 스크립트 내에서 데이터를 저장하는 공간이야. 스크립트를 더 유연하고 편리하게 만들어줘.
변수 생성하기
변수를 선언하려면 이런 형식을 사용하면 돼:
변수_이름="값"
예시:
NAME="Linux"
echo "환영합니다, $NAME!"
출력:
환영합니다, Linux!
참고: 변수 이름과 =
사이에 공백을 넣으면 안 돼. 공백을 넣으면 bash가 이상한 걸 적으려고 한다고 생각해서 오류를 표시할 거야.
내장 변수
Bash는 몇 가지 기본 제공 변수를 제공해, 예를 들어:
$USER
— 현재 사용자.$HOME
— 홈 디렉토리.$PWD
— 현재 작업 중인 디렉토리.
다음과 같은 스크립트를 시도해 봐:
#!/bin/bash
echo "안녕, $USER!"
echo "너의 홈 디렉토리는: $HOME"
echo "현재 여기에 있어: $PWD"
4. 사용자로부터 데이터 받기
가끔은 스크립트가 작동하려면 사용자로부터 데이터를 받아야 해. 이를 위해 read
명령어를 사용해.
예제:
#!/bin/bash
echo "이름이 뭐야?"
read NAME
echo "안녕, $NAME!"
스크립트를 실행하면 네 이름을 입력할 수 있고, 스크립트가 개인적으로 환영해 줄 거야.
5. 스크립트 내 명령어 사용
Bash는 마치 터미널에서 직접 입력하는 것처럼 명령어를 실행할 수 있어.
예를 들어:
#!/bin/bash
echo "현재 날짜와 시간:"
date
date
명령어는 현재 시간과 날짜를 출력해. 예를 들어:
현재 날짜와 시간:
Mon Oct 30 12:34:56 UTC 2023
명령어 결과를 변수에 저장하기
$()
를 사용해서 명령어 출력을 변수에 저장할 수 있어. 이건 데이터를 더 처리하기에 편리해.
예시:
#!/bin/bash
CURRENT_DATE=$(date)
echo "지금: $CURRENT_DATE"
6. 스크립트에서의 주석
항상 주석을 추가해 두는 게 좋아, 한 달 뒤에 네가 무슨 코드를 작성했는지 이해할 수 있을 거야. 주석은 #
기호를 사용해서 넣어:
#!/bin/bash
# 이건 환영 스크립트야
echo "Bash 세계에 온 걸 환영해!"
주석은 인터프리터에 무시되고 실행에 영향을 끼치지 않아.
7. 예제
이제 파일이 존재하는지 확인하는 스크립트를 작성해 볼게.
파일 생성:
nano file_checker.sh
코드 추가:
#!/bin/bash # 파일 이름 요청 echo "파일 이름을 입력하세요:" read FILE_NAME # 파일 존재 여부 확인 if [ -f "$FILE_NAME" ]; then echo "파일 $FILE_NAME 이(가) 존재합니다." else echo "파일 $FILE_NAME 을(를) 찾을 수 없습니다." fi
파일을 실행 가능하게 만들고 실행:
chmod +x file_checker.sh ./file_checker.sh
스크립트 실행 예제:
파일 이름을 입력하세요: test.txt 파일 test.txt 이(가) 존재합니다.
8. 일반적인 실수
Bash 스크립트를 다룰 때 즐거움뿐 아니라 가끔 심각한 골칫거리도 발생해. 여기 몇 가지 흔한 실수를 정리했어:
셰뱅을 생략함.
#!/bin/bash
줄이 없으면, 스크립트가 다른 인터프리터에서 실행되려고 해서 오류가 발생할 수 있어.선언되지 않은 변수.
변수 이름에서 오타를 낸 경우 bash는 변수를 빈 값으로 인식해. 스크립트 맨 위에set -u
를 추가해 엄격한 검사 모드를 켜는 게 좋아.=
주변의 공백.
절대 이렇게 작성하지 마:VARIABLE = "value"
. 오류가 생길 거야.권한 문제.
스크립트에 실행 권한이 없다면,chmod +x
로 실행 권한을 추가해.
실습 과제
다음 작업을 수행하는 스크립트를 작성해:
- 사용자 이름을 요청해.
- 환영 인사를 출력해.
- 현재 날짜와 시간을 보여줘.
다음 작업을 수행하는 스크립트를 작성해:
- 사용자에게 파일 이름을 요청해.
- 파일이 없으면 생성하고, 이미 있으면 파일이 존재한다고 알려줘.
이제 bash 스크립트의 기초를 알게 됐어! 조건과 루프 추가하는 법도 배워야 하지만, 그건 다음 강의 주제야. 자동화의 세계로 나아가자!
GO TO FULL VERSION