Cloud & Platform
쉘 스크립트 학습 내용 정리
쉘 스크립트 학습 내용 정리 학습 내용을 정리한 백필 노트입니다.
이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.
챕터 1: 쉘 스크립트 기초 실습
- 주요 개념:
- 쉘(Shell): 사용자와 컴퓨터 운영체제 사이의 통역사.
- 쉘 스크립트(Shell Script): 쉘이 실행할 명령어들을 순서대로 적어놓은 파일.
- 쉬뱅(Shebang): 스크립트 첫 줄의
#!/bin/bash와 같은 부분으로, 스크립트를 실행할 쉘 프로그램을 지정합니다.
- 핵심 기술:
.sh확장자를 가진 쉘 스크립트 파일 생성 (touch).- 파일에 실행 권한 부여 (
chmod +x 파일명). - 스크립트 실행 방법 2가지 (
./스크립트명,bash 스크립트명).
- 실습 프로젝트:
hello.sh파일을 만들어 "Hello, Shell Script!" 메시지를 출력하는 스크립트 작성 및 실행.
- 주요 명령어:
echo,ls,cd,pwd,touch,nano,cat,chmod
챕터 2: 변수 및 환경 변수 실습
- 주요 개념:
- 변수(Variable): 데이터를 저장하는 이름표 붙은 상자.
이름=값형태로 선언하며, 사용할 때는$이름형식으로 사용합니다. (주의:=기호 양쪽에 공백 없음) - 환경 변수(Environment Variable): 운영체제와 모든 프로그램이 공유하는 시스템 전체 설정값. (예:
$HOME,$PATH,$USER)
- 변수(Variable): 데이터를 저장하는 이름표 붙은 상자.
- 핵심 기술:
- 변수 선언 및 사용.
date,whoami,pwd같은 명령어의 실행 결과를$(명령어)구문을 사용해 변수에 저장.- 주요 환경 변수의 의미를 이해하고 값 확인.
- 실습 프로젝트:
my_first_script.sh파일을 만들어 이름, 학습 시간 등의 정보를 변수에 담고, 명령어 실행 결과를 변수에 저장하여 출력.
- 주요 문법 및 명령어:
변수명="값",echo "$변수명",변수명=$(명령어),printenv
챕터 3: 입출력 및 명령줄 인수 실습
- 주요 개념:
- 입력(Input): 사용자로부터 정보를 받는 것.
- 출력(Output): 사용자에게 정보를 보여주는 것.
- 명령줄 인수(Command-line Arguments): 스크립트 실행 시 파일 이름 뒤에 추가로 전달하는 값.
- 핵심 기술:
- 화면에 글자 출력 (
echo,printf). - 사용자로부터 키보드 입력받기 (
read 변수명). - 스크립트 실행 시 전달된 인수를 특수 변수로 받아서 활용.
- 화면에 글자 출력 (
- 실습 프로젝트:
interactive_script.sh파일을 만들어 사용자에게 이름, 좋아하는 색 등을 물어보고 입력받은 값으로 메시지를 만드는 대화형 스크립트 작성. 명령줄 인수를 통해 정보를 미리 전달받는 기능도 추가.
- 주요 변수 및 명령어:
read,echo -n,printf,$1(첫 번째 인수),$2(두 번째 인수),$@(모든 인수),$#(인수의 총 개수)
챕터 4: 조건문 실습
- 주요 개념:
- 조건문(Conditional Statement): 특정 조건이 참인지 거짓인지에 따라 다른 명령을 실행하도록 코드의 흐름을 제어하는 문법.
- 핵심 기술:
if,elif,else를 사용한 조건문 작성.- 숫자 비교 연산자 (
gt,ge,lt,le,eq,ne) 사용. - 파일 및 디렉토리 존재 여부를 확인하는 파일 테스트 연산자 (
f,d,e) 사용.
- 실습 프로젝트:
my_condition_script.sh파일을 만들어 사용자에게 숫자를 입력받아 양수, 0, 음수를 판별하고, 특정 파일과 폴더의 존재 여부를 확인하여 다른 메시지를 출력.
- 주요 문법:
if [ 조건 ]; then ... elif [ 다른조건 ]; then ... else ... fi
챕터 5: 반복문 실습 (for)
- 주요 개념:
- 반복문(Loop): 정해진 횟수나 목록의 각 항목에 대해 특정 작업을 반복 실행하는 문법.
- for 루프: 정해진 목록(숫자 범위, 파일 목록, 문자열 목록 등)의 각 항목에 대해 반복할 때 주로 사용.
- 핵심 기술:
- 숫자 범위를 반복하는 방법 (
{1..5}). - 특정 패턴(
.txt)에 해당하는 파일 목록을 반복. - 문자열 목록을 반복.
- 반복문을 활용한 파일 일괄 생성, 내용 추가, 복사 등 배치 처리.
- 숫자 범위를 반복하는 방법 (
- 실습 프로젝트:
loop_practice.sh파일을 만들어 1부터 5까지의 숫자를 반복하며 파일을 생성하고, 생성된 모든.txt파일에 내용을 추가하는 자동화 스크립트 작성.
- 주요 문법:
for 변수 in 목록; do ... done
챕터 6: 반복문 실습 (while)
- 주요 개념:
- while 루프: 특정 조건이 '참(True)'인 동안 계속해서 작업을 반복 실행. 조건이 '거짓(False)'이 되면 중단.
- 핵심 기술:
- 조건을 만족하는 동안 반복하는
while루프 작성. break: 반복문을 즉시 중단하고 탈출.continue: 현재 반복을 건너뛰고 다음 반복으로 진행.while read구문을 사용하여 파일 내용을 한 줄씩 읽어 처리.IFS변수를 사용하여 CSV 파일처럼 구분자로 나뉜 데이터 처리.
- 조건을 만족하는 동안 반복하는
- 실습 프로젝트:
my_while_script.sh파일을 만들어 숫자 카운팅,break/continue활용,names.txt파일 내용을 한 줄씩 읽어 출력하는 스크립트 작성.
- 주요 문법:
while [ 조건 ]; do ... done,break,continue,while read 변수; do ... done < 파일명
챕터 7: 함수 및 모듈화 실습
- 주요 개념:
- 함수(Function): 특정 작업을 수행하는 코드 묶음에 이름을 붙인 것. 코드 재사용성, 가독성, 관리 용이성을 높여줌.
- 인수(Argument): 함수를 호출할 때 함수에게 전달하는 입력값. 함수 내에서는
$1,$2등으로 접근.
- 핵심 기술:
function 함수이름 { ... }형태로 함수 정의.- 함수 이름과 인수를 나열하여 함수 호출.
- 함수의 실행 결과를
echo로 출력하고, 호출 부분에서$(함수이름)구문으로 캡처하여 변수에 저장.
- 실습 프로젝트:
my_functions.sh파일을 만들어 단순 인사, 이름을 받아 인사, 현재 시간을 알려주는 함수 등을 정의하고 호출.
- 주요 문법:
function 함수이름 { ... },함수이름 인수1 인수2,local 변수명,결과변수=$(함수이름)
챕터 8: 3일차 종합 실습
- 목표: 이전에 배운 모든 개념(변수, 입출력, 조건문, 반복문 등)을 종합하여 실용적인 메뉴 기반 유틸리티 제작.
- 핵심 기술:
while true무한 루프를 사용해 프로그램이 계속 실행되도록 구성.clear명령으로 화면을 정리하여 사용자 경험 개선.read로 사용자 메뉴 선택을 입력받음.case문을 사용하여 사용자의 선택에 따라 다른 기능을 실행.exit명령으로 프로그램을 정상 종료.
- 실습 프로젝트:
my_utility.sh파일을 만들어 사용자에게 메뉴(디스크 사용량, 메모리 사용량, 프로세스 확인, 종료)를 보여주고, 선택에 따라 해당 시스템 정보를 출력하는 유틸리티 완성.
- 주요 문법:
while true; do ... done,case $변수 in 패턴1) ... ;; 패턴2) ... ;; *) ... ;; esac,exit