셸 스크립트 작성 기초

단순히 한두 줄의 명령어를 실행하는 것을 넘어, 여러 명령을 파일로 저장하여 한 번에 실행하는 것을 세크립트(Scripting)라고 합니다. Snakemake의 규칙 내부에서 별도의 스크립트 파일을 실행해야 할 때 알아두면 좋은 지식들입니다.

쉬뱅 (Shebang, #!)

스크립트 파일의 맨 첫 줄에는 이 파일을 어떤 프로그램(인터프리터)으로 실행할지 지정하는 “쉬뱅”이 필요합니다.

#!/usr/bin/env bash
echo "이 스크립트는 Bash 셸로 실행됩니다."

Python이나 R 스크립트의 경우에도 다음과 같이 사용할 수 있습니다. * Python: #!/usr/bin/env python3 * R: #!/usr/bin/env Rscript

/usr/bin/env를 사용하면 시스템마다 다른 실행 파일의 위치를 자동으로 찾아주므로 이식성이 높아집니다.

실행 권한 부여 (chmod)

텍스트 파일이 실행 가능한 스크립트가 되려면 시스템으로부터 실행 권한을 부여받아야 합니다.

# myscript.sh 파일에 실행 권한 부여
chmod +x myscript.sh

# 실행하기
./myscript.sh

Bash 스크립트 작성 팁

워크플로 내에서 호출되는 스크립트라면 중간에 오류가 발생했을 때 즉시 멈추도록 설정하는 것이 안전합니다.

#!/usr/bin/env bash
set -e  # 오류 발생 시 즉시 종료
set -x  # 실행되는 각 명령어를 화면에 출력 (디버깅용)

echo "데이터 처리 시작..."
# ... 명령어들 ...

Snakemake와 스크립트의 연결

Snakemake에는 shell: 대신 script: 지시자를 사용하여 별도의 스크립트 파일을 직접 실행하고, 워크플로의 변수들을 스크립트 안에서 직접 사용할 수 있는 기능이 있습니다. (상세 내용은 관련 레시피 참고)