실전 shell 스크립트의 모양
프로덕션 급 shell 스크립트는 구조 공유: 방어적 헤더, 설정 블록, helper 함수, 메인 흐름, 종료 cleanup. 복사해서 변형할 수 있는 세 패턴.
backup.sh — 날짜별 archive 로 rsync
#!/usr/bin/env bash
set -euo pipefail
src="${1:-$HOME}"
dest="${BACKUP_ROOT:-/Volumes/backup}/$(date +%Y/%m/%d)"
mkdir -p "$dest"
rsync -avzP --delete --exclude='.cache' "$src/" "$dest/"
echo "backup at $dest"deploy.sh — 테스트 후 push
#!/usr/bin/env bash
set -euo pipefail
log() { printf '%(%H:%M:%S)T %s\n' -1 "$*"; }
trap 'log "deploy failed at line $LINENO"' ERR
log 'running tests'
./test.sh
log 'pushing'
git push origin main
log 'done'daily-check.sh — 헬스 게이트
#!/usr/bin/env bash
set -euo pipefail
fail=0
checks=(
'curl -sSf https://api.example/health'
'pgrep -f my-worker'
'df -P / | awk "NR==2 && \$5+0 < 90"'
)
for c in "${checks[@]}"; do
if eval "$c" >/dev/null; then
echo "✔ $c"
else
echo "✘ $c"
fail=1
fi
done
exit "$fail"Pippa 패턴
cwkPippa 의 pippa-working-scripts 디렉터리가 같은 모양 — 방어적 헤더, 라이프사이클 주석 (# @pippa: persistent | purpose), 날짜 prefix 대신 목적 기반 이름. 2026 의 ergonomic shell 스크립트 참고.