스크립트 기본 구조
Bash
#!/bin/bash
set -euo pipefail
main() {
echo "스크립트 시작"
}
main "$@"변수
Bash
NAME="SecuThive"
echo "안녕, $NAME"
echo '값: $NAME' # 작은따옴표는 문자 그대로
readonly VERSION="1.0.0"
PORT="${PORT:-8080}" # 기본값 설정
SERVERS=("web1" "web2" "web3")
echo "${SERVERS[0]}" # web1
echo "${#SERVERS[@]}" # 원소 개수조건문
Bash
FILE="/etc/nginx/nginx.conf"
if [[ -f "$FILE" ]]; then
echo "파일 존재"
elif [[ -d "$FILE" ]]; then
echo "디렉터리"
else
echo "없음"
fi
if [[ "$ENV" == "production" ]]; then
echo "운영 환경"
fi
if [[ $COUNT -gt 10 ]]; then
echo "10 초과"
fi파일 테스트 연산자
| 표현식 | 의미 |
|---|---|
-f FILE | 일반 파일 존재 |
-d DIR | 디렉터리 존재 |
-e PATH | 경로 존재 |
-r FILE | 읽기 권한 있음 |
-z STRING | 문자열이 비어있음 |
-n STRING | 문자열이 비어있지 않음 |
반복문
Bash
for server in "${SERVERS[@]}"; do
echo "배포: $server"
ssh "$server" "sudo systemctl restart myapp"
done
for i in {1..5}; do
echo "시도 $i"
done
COUNT=0
while [[ $COUNT -lt 3 ]]; do
echo "대기 중..."
sleep 1
((COUNT++))
done함수
Bash
log() {
local level="$1"
local msg="$2"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $msg"
}
check_service() {
local service="$1"
if systemctl is-active --quiet "$service"; then
log "INFO" "$service 실행 중"
return 0
else
log "ERROR" "$service 중지됨"
return 1
fi
}
check_service nginx || exit 1에러 처리
Bash
if ! rsync -av /src/ user@host:/dest/; then
log "ERROR" "rsync 실패"
exit 1
fi
TMPFILE=$(mktemp)
trap 'rm -f "$TMPFILE"; echo "정리 완료"' EXIT
trap 'echo "에러 발생: 줄 $LINENO"' ERR편집 안내 · Editorial Note
이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.
관련 공식 문서GNU/Linux man 페이지 ↗
질문 & 답변 (Q&A)
이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.