고급 Bash 쉘 스크립트 기법: trap 시그널과 서브쉘 치환

💡 핵심 요약 (Executive Summary)

본 가이드는 bash doc2 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.

📑 Table of Contents
요약
bash
# cmd결과를 변수로 사용하여 cmd 실행
command $({ command })
ENV
BASH_SOURCE
bash
# 현재 스크립트의 위치를 찾기
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# 스크립트 파일의 이름
SCRIPT_NAME="$(basename "${BASH_SOURCE[0]}")"

# 스크립트 파일의 전체 경로
SCRIPT_PATH="$SCRIPT_DIR/$SCRIPT_NAME"

# 결과 출력
echo "현재 스크립트의 디렉토리: $SCRIPT_DIR"
echo "현재 스크립트의 이름: $SCRIPT_NAME"
echo "현재 스크립트의 전체 경로: $SCRIPT_PATH"
Bash Command
bash
# 빈 파일 생성
>file

# 출력을 파일에 입력 후 저장
{ print } > file

# subcommand 결과 출력을 command에 파일 입력으로 사용
#ex) cat <({ subcommand }) #출력됨
#ex) echo <({ subcommand }) #임시파일 경로 출력
command <({ subcommand })

# command에 파일 입력
command < { file }

# command에 출력을 입력
{ print } | command

# subcommand 결과 값을 command 인자값(평문)으로 사용
#ex) echo `{ subcommand }`
command `{ subcommand }`

# backtick 2중첩시
command `subcommand \`subcommand2\``

# 표준출력을 파일의 마지막줄에 추가
echo 'Text' >> file
cat sourcefile >> file

# 텍스트를 파일의 마지막줄에 추가하고 출력
cat << EOF >> file
TEXTS
TESTS
EOF

# daemon 실행시 cli 백그라운드에서 실행
dockerd $

# 백그라운드 관련 보기 변경
bg
fg

# 배열의 길이 출력
export ARRAY=(A B C D)
echo ${#ARRAY[@]} #4
표현식
bash
'\n' #줄바꿈
Shell 구현
getops
Reference & Guidelines (NOTE)

getopt $string 사용시에 string은 1 char 뒤에 : 가 연결되면 value가 필요한 플래그가 됨

ex) a\:bcd\:

-a 1 -b -c -d 2

Features
리디렉션 조작
목적 명령어
stdout을 stderr로 출력 command 1>&2
stderr을 stdout으로 출력 command 2>&1
stdout과 stderr 모두 파일로 저장 command > out.log 2>&1
stderr만 파일로 저장 command 2> error.log
stdout만 파일로 저장 command > output.log
stderr 무시 command 2>/dev/null
stdout 무시 command > /dev/null
둘 다 무시 command > /dev/null 2>&1
script의 실행위치로 이동
bash
SCRIPT_DIR="$(dirname "$0")" && cd $SCRIPT_DIR

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *