11#! /bin/bash
22
3- # 현재 작업 디렉토리를 BASE_DIR로 설정
4- BASE_DIR=$( pwd)
5-
6- while getopts " n:d:h" opt; do
7- case $opt in
8- n) FILE_NAME=" $OPTARG "
9- ;;
10- d) BASE_DIR=" $OPTARG "
11- ;;
12- h) usage
13- ;;
14- \? ) usage
15- ;;
16- esac
17- done
18-
19- # 로그 디렉토리
20- LOG_DIR=" $BASE_DIR /logs"
21-
22- # 가상 환경 경로
23- VENV_DIR=" $BASE_DIR /myenv"
24-
253# 도움말 메시지 함수
264usage () {
275 echo " 사용방법: $0 -n <file_name> -d <directory_path>"
@@ -31,29 +9,87 @@ usage() {
319 exit 1
3210}
3311
12+ # 현재 작업 디렉토리를 BASE_DIR로 설정
13+ BASE_DIR=" $( pwd) "
14+
15+ # run.sh 위치
16+ ROOT_DIR=" $( cd " $( dirname " $0 " ) " && pwd) "
17+
18+ while getopts " n:d:h" opt; do
19+ case $opt in
20+ n) FILE_NAME=" $OPTARG " ;;
21+ d) BASE_DIR=" $OPTARG " ;;
22+ h) usage ;;
23+ \? ) usage ;;
24+ esac
25+ done
26+
3427# 인자가 하나도 없을 경우 도움말 출력
3528if [ $# -eq 0 ]; then
3629 usage
3730fi
3831
3932# 파일 이름 인자 확인
4033if [ -z " $FILE_NAME " ]; then
41- useage
34+ usage
35+ fi
36+
37+ # 로그 디렉토리
38+ LOG_DIR=" $ROOT_DIR /logs"
39+ FULL_LOG_DIR=" $LOG_DIR /$FILE_NAME "
40+ LOG_FILE=" $FULL_LOG_DIR /$FILE_NAME .out"
41+
42+ # 로그 디렉토리 생성
43+ mkdir -p " $FULL_LOG_DIR "
44+
45+ # 가상 환경 경로
46+ VENV_DIR=" $ROOT_DIR /myenv"
47+
48+ # 가상 환경 Python 실행 파일 경로
49+ VENV_PYTHON=" $VENV_DIR /bin/python"
50+
51+ # python3 실행 파일 경로 확인
52+ PYTHON3_BIN=" $( command -v python3) "
53+
54+ # python3 명령 확인
55+ if [ -z " $PYTHON3_BIN " ]; then
56+ echo " python3 명령을 찾을 수 없습니다." >> " $LOG_FILE "
57+ exit 1
4258fi
4359
4460# 가상 환경 확인 및 생성
45- if [ ! -d " $VENV_DIR " ]; then
46- echo " Python 가상환경이 없습니다!"
47- echo " 가상환경을 생성합니다..."
48- python3 -m venv $VENV_DIR >> $FULL_LOG_DIR / $FILE_NAME .out 2>&1
61+ if [ ! -x " $VENV_PYTHON " ]; then
62+ echo " Python 가상환경이 없습니다!" >> " $LOG_FILE "
63+ echo " 가상환경을 생성합니다..." >> " $LOG_FILE "
64+ " $PYTHON3_BIN " -m venv " $VENV_DIR " >> " $LOG_FILE " 2>&1
4965fi
5066
51- # 로그 디렉토리 생성
52- FULL_LOG_DIR=" $LOG_DIR /$FILE_NAME "
53- mkdir -p $FULL_LOG_DIR
67+ # 가상 환경 생성 결과 확인
68+ if [ ! -x " $VENV_PYTHON " ]; then
69+ echo " 가상환경 생성에 실패했습니다. $VENV_PYTHON 파일이 존재하지 않습니다." >> " $LOG_FILE "
70+ exit 1
71+ fi
72+
73+ # requirements.txt 파일 존재 확인
74+ if [ ! -f " $ROOT_DIR /requirements.txt" ]; then
75+ echo " requirements.txt 파일이 존재하지 않습니다: $ROOT_DIR /requirements.txt" >> " $LOG_FILE "
76+ exit 1
77+ fi
78+
79+ # 실행할 python 파일 존재 확인
80+ if [ ! -f " $BASE_DIR /$FILE_NAME .py" ]; then
81+ echo " 실행할 python 파일이 존재하지 않습니다: $BASE_DIR /$FILE_NAME .py" >> " $LOG_FILE "
82+ exit 1
83+ fi
5484
5585# 필요한 패키지 설치
56- pip3 install -r $BASE_DIR /requirements.txt >> $FULL_LOG_DIR /$FILE_NAME .out 2>&1
86+ " $VENV_PYTHON " -m pip install -r " $ROOT_DIR /requirements.txt" >> " $LOG_FILE " 2>&1 || {
87+ echo " 패키지 설치에 실패했습니다." >> " $LOG_FILE "
88+ exit 1
89+ }
5790
5891# 파이썬 스크립트 실행
59- python3 $BASE_DIR /$FILE_NAME .py >> $FULL_LOG_DIR /$FILE_NAME .out 2>&1
92+ " $VENV_PYTHON " " $BASE_DIR /$FILE_NAME .py" >> " $LOG_FILE " 2>&1 || {
93+ echo " 파이썬 스크립트 실행에 실패했습니다." >> " $LOG_FILE "
94+ exit 1
95+ }
0 commit comments