-
셸 스크립트 주요 구문 정리Linux 2025. 10. 28. 16:32
1. 변수
- 시스템 환경 변수 및 상수: 일반적으로 모두 대문자를 사용 (예: PATH, HOME, USER, PWD)
- 사용자 정의 변수: 일반적으로 소문자를 사용 (예: filename, count, result)
구분 설명 예시 일반 변수 선언 시 $ 없이, 참조 시 $ 붙임 name="cat"; echo $name 전역 변수 스크립트 전체에서 사용 가능 var="hello" 지역 변수 함수 내에서만 유효 local var="hi" 예약 변수 시스템에서 기본 제공 $HOME, $PATH, $USER, $PWD 환경 변수 하위 프로세스에도 전달됨 (export) export JAVA_HOME=/usr/lib/jvm/java-11 위치 매개변수 스크립트 인자 전달용 $0(스크립트명), $1, $2, …, $#(인자 개수), $@(전체 인자) 특수 매개변수 스크립트 제어용 $?(이전 명령어 종료코드), $$(현재 PID), $!(백그라운드 PID) 2. 조건문
- if 문
if [ 조건식 ]; then # 조건식이 참(true)이면 아래 명령 실행 명령 # 조건식이 참일 때 실행할 코드 elif [ 조건식 ]; then # 위 조건이 거짓이고, 새로운 조건식이 참일 때 실행 명령 # 두 번째 조건이 참일 때 실행할 코드 else # 위의 모든 조건이 거짓일 때 실행 명령 # 기본적으로 실행할 코드 fi # if 문의 끝 (반드시 있어야 함)#!/bin/bash num=15 if [ $num -eq 10 ]; then echo "숫자는 10입니다." elif [ $num -eq 20 ]; then echo "숫자는 20입니다." else echo "숫자는 10도 20도 아닙니다." fi- case 문
# 변수의 값에 따라 실행할 명령을 구분하는 case문 case $변수 in 값1) # 만약 변수의 값이 '값1'이면 명령1 # 이 명령을 실행 ;; # 이 블록의 끝을 표시 (반드시 필요) 값2) # 만약 변수의 값이 '값2'이면 명령2 # 이 명령을 실행 ;; # 이 블록의 끝을 표시 *) # 위의 어떤 값과도 일치하지 않을 때 (기본값) 기본명령 # 기본 동작 실행 ;; # 끝 esac # case 문의 끝을 표시 (반드시 있어야 함)#!/bin/bash fruit="포도" case $fruit in apple) echo "사과입니다" ;; banana) echo "바나나입니다" ;; *) echo "기타 과일입니다" ;; esac3. 반복문
- for 문
# 변수가 값1, 값2, 값3 하나씩 순서대로 대입되며 반복 실행 # do로 반복 블록을 열고, done으로 닫음 for 변수 in 값1 값2 값3; do 명령 donefor fruit in apple banana orange; do echo "과일: $fruit" done- C 형식 for 문 (bash만 지원)
# (()) 안에서 i++, i<=5 같은 산술 연산 가능 # 변수 앞에 $ 안 붙여도 됨 ((( )) 안에서는 자동 인식) for (( 초기값; 조건식; 증감식 )); do 명령 donefor (( i=1; i<=5; i++ )); do echo "반복: $i" done- while
# 조건식이 참(true) 인 동안 블록(do~done)을 반복 실행 # 조건식이 거짓(false) 가 되면 반복 종료 while [ 조건식 ] do 명령 donecount=1 while [ $count -le 5 ]; do echo "현재 카운트: $count" count=$((count + 1)) done- until : while 문과 정반대의 조건으로 동작하는 반복
until [ 조건식 ]; do # 조건식이 '거짓'인 동안 실행할 명령 명령 done#!/bin/bash COUNT=1 until [ $COUNT -gt 5 ]; do # COUNT가 5보다 크지 않은 동안 (거짓인 동안) 반복 echo "현재 COUNT: $COUNT" COUNT=$((COUNT + 1)) # COUNT 값을 1 증가 done echo "반복문 종료" # 출력 결과: # 현재 COUNT: 1 # 현재 COUNT: 2 # 현재 COUNT: 3 # 현재 COUNT: 4 # 현재 COUNT: 5 # 반복문 종료4. 연산자
- 기본 연산자
연산자 의미 = 같음 != 다름 -n 문자열이 비어있지 않음 -z 문자열이 비어있음 - 비교 연산자
기호 의미 대체 > 크다 -gt < 작다 -lt >= 크거나 같다 -ge <= 작거나 같다 -le = 같다 -eq != 다르다 -ne - 논리 연산자
- -a, -o는 POSIX 표준 문법이고 조건식 내에서 &&, ||는 Bash 확장 문법이다.
- 현대의 대부분 리눅스 환경에서는 Bash 스타일(&&, ||)이 가독성과 안정성 측면에서 권장된다고 함.
연산자 의미 동작 방식 예시 -a (단일 괄호 [ ]에서 사용) AND (그리고) 두 조건이 모두 참일 때만 전체 결과가 true [ $a -gt 0 -a $b -lt 10 ] && (이중 괄호 [[ ]]에서 사용) AND (그리고) 두 조건이 모두 참 일 때만 전체 결과가 true [[ $a -gt 0 && $b -lt 10 ]] a=5 b=8 if [[ $a -gt 0 && $b -lt 10 ]]; then echo "a와 b 모두 0~10 사이입니다" fi연산자 의미 동작 방식 예시 -o (단일 괄호 [ ]에서 사용) OR (또는) 두 조건 중 하나라도 참이면 전체 결과가 참 [ $a -eq 1 -o $b -eq 2 ] || (이중 괄호 [[ ]]에서 사용) OR (또는) 두 조건 중 하나라도 참이면 전체 결과가 참 [[ $a -eq 1 || $b -eq 2 ]] a=1 b=10 if [[ $a -eq 1 || $b -eq 2 ]]; then echo "하나라도 참이므로 실행됩니다" else echo "둘 다 거짓이라 실행되지 않습니다" fi- 파일 /디렉터리 연산자
연산자 설명 -e 존재 여부 -f 일반 파일 여부 -d 디렉터리 여부 -r 읽기 가능 여부 -w 쓰기 가능 여부 -x 실행 가능 여부 5. 정규표현식
셸 환경에서 정규 표현식은 POSIX 표준을 따른다.
리눅스나 유닉스에서 특별한 특징을 부여하는 문자들과 메타 문자들의 집합으로 주로 텍스트 탐색이나 문자열 조작에 쓰이며, 하나의 문자 혹은 문자열의 일부분을 표현할 때 쓰인다.
#!/bin/bash filename="report_20250701.log" # 파일명이 'report_'로 시작하고 숫자로 끝나는지 확인 if [[ $filename =~ ^report_[0-9]+\.log$ ]]; then echo "정규 표현식과 일치합니다." else echo "일치하지 않습니다." fi6. 자주 쓰이는 리눅스 명령어
명령어 기능 예시 grep 문자열 검색 grep "error" logfile.txt find 파일 찾기 find / -name "*.log" awk 특정 필드 추출 awk '{print $1, $3}' data.txt sed 문자열 치환 sed 's/foo/bar/g' file.txt date 날짜/시간 출력 date "+%Y-%m-%d %H:%M:%S" 'Linux' 카테고리의 다른 글
Rocky Linux CLI 모드로 변경 (0) 2025.10.30 Rocky 리눅스 비밀번호 재설정 (0) 2025.10.28 yt-dlp로 유튜브 빌리빌리 영상 다운 받기 (0) 2025.10.05 VirtualBox VM 가상 디스크 확장 (0) 2025.09.08 Github 저장소 연결 (0) 2025.07.31