Shell 스크립트의 핵심 개념과 실용적 활용

Shell의 기초와 실행 모드

Shell은 사용자가 운영체제 커널과 상호작용하는 인터페이스로, 명령어 처리 및 스크립트 작성 기능을 제공한다. 주로 bash가 리눅스 환경에서 기본으로 사용되는 쉘이다.

실행 방식

  • 인터랙티브 모드: 터미널에서 직접 명령어를 입력하고 즉각적인 결과를 확인하는 방식.
  • 비인터랙티브 모드: 스크립트 파일을 실행하여 일련의 명령어를 자동으로 처리하는 방식.

스크립트 시작선

#!/usr/bin/env bash

이 구문은 스크립트가 어떤 쉘로 실행될지를 지정한다. /usr/bin/env 방식은 시스템의 PATH 환경 변수를 기반으로 쉘을 찾기 때문에 더 유연하고 신뢰할 수 있다.

기본 문법

주석

# 단일 줄 주석

:<<EOF
여러 줄 주석
여러 줄 주석
EOF
</code>

출력 명령어

echo는 문자열 출력에 사용되며, -e 옵션을 통해 이스케이프 문자를 해석할 수 있다.

echo "Hello World"
echo -e "Line1\nLine2"  # 줄바꿈 적용
echo -e "YES\cNO"      # 줄바꿈 없음

포맷팅 출력

printf는 정밀한 포맷팅을 가능하게 한다.

printf "%-10s %-8s %.2f\n" 이름 성별 체중

변수 및 데이터 타입

Bash는 강력한 타입 시스템 없이 동적으로 변수를 관리한다.

변수 선언 및 접근

name="Alice"
echo "${name}"   # 권장: 중괄호 사용

특수 변수

변수설명
$HOME사용자 홈 디렉터리
$PATH실행 파일 검색 경로
$RANDOM0~32767 사이의 난수
$UID사용자 고유 ID

문자열 조작

길이 및 추출

text="hello"
echo ${#text}         # 길이: 5
echo ${text:1:3}      # 인덱스 1부터 3글자 추출: "ell"

하위 문자열 검색

result=$(expr index "$text" "ll")
echo $result          # 3 (ll의 위치)

배열 처리

Bash는 1차원 배열만 지원하며, 인덱스는 0부터 시작한다.

배열 생성 및 접근

colors=(red green blue)
echo ${colors[1]}           # green
echo ${colors[*]}           # red green blue
echo ${colors[@]}           # red green blue

배열 요소 추가 및 삭제

colors+=(yellow black)      # 추가
unset colors[1]             # 삭제

연산자

산술 연산

result=$(( 10 + 5 * 3 ))
echo $result                # 25

조건 비교

if [[ $x -eq 10 ]]; then
  echo "같다"
fi

파일 속성 확인

if [[ -f /etc/passwd ]]; then
  echo "파일 존재"
fi

제어 구조

조건문

if [[ $age -ge 18 ]]; then
  echo "성인"
elif [[ $age -ge 13 ]]; then
  echo "청소년"
else
  echo "아동"
fi

반복문

for i in {1..5}; do
  echo $i
done

while [[ $count -lt 10 ]]; do
  echo $count
  count=$((count + 1))
done

함수 정의

calculate() {
  local a=$1
  local b=$2
  local op=$3
  case $op in
    "+") return $(($a + $b)) ;;
    "-") return $(($a - $b)) ;;
    *) return 0 ;;
  esac
}

calculate 5 3 "+"
echo $?  # 반환값 출력

확장 및 리디렉션

명령 확장

current_time=$(date +%H:%M:%S)
echo $current_time

표준 입출력 리디렉션

ls > file_list.txt        # 출력 저장
grep error log.txt 2>&1    # 오류도 표준 출력으로 전달

디버깅 방법

스크립트 실행 시 디버그 모드를 활성화하면 각 명령어의 실행 과정을 확인할 수 있다.

#!/bin/bash -x
echo "Debug mode enabled"

태그: bash Shell scripting command line automation linux

6월 11일 16:17에 게시됨