[Shell Script] 변수나 함수를 외부 파일로 작성
.(닷) 명령어
여러 셸 스크립트에서 공통된 설정 값이나 함수를 사용하는데 그런 값과 함수를 외부 파일로 정의 하고 싶을 때 사용합니다.
#!/bin/sh
. ./env.sh #1
nowtime
cp -i -v large-file.tar.gz "$WORK_DIR"
nowtime
해설
이 스크립트는 지정한 작업 디렉터리에 큰 파일을 복사하여 그처리시간을 측정하는 스크립트 예제입니다 .
예시 파일로 large-file.tar.gz 라는 파일을 만들고 진행했습니다 .
#touch file1 file2 file3 file4
#tar -zcvf large-file.tar.gz file*
#1에서 env.sh라는 정의 파일을 .(닷 명령어)으로 받아드립니다 .
env.sh 의 내용은 다음과 같습니다 .
WORK_DIR=/var/tmp/myapp/
nowtime() {
date +%X
}
임시 디렉터리 변수 ($WORK_DIR)와 현재 시간을 date으로 표시하는 함수가 정의 되어있습니다.
.(닷 명령어)의 장점과 단점
외부 파일을 쓰면 의존관계가 생깁니다 .
어떤 셸 스크립트를 다른 환경에 이식 할때 읽어들이는 외부 파일도 함께 이동해야 한다는 뜻입니다.
한편 , 셸 스크립트의 좋은 점으로 스크립트 파일 하나를 복사하면 이동이 끝난다는 간편함이 있습니다 . 닷 명령어를 사용하여 발생하는 의존 관계는 이런 간편함을 저해시킵니다 .
따라서 의존 관계가 싫어서 닷 명령어를 사용하지 않는 사람도 있습니다 .
팀으로 작업을 할 때나 장기적으로 오래 사용할 스크립트에 대한 방침을 미리 정해야합니다 .
결과
파일이 /var/tmp/myapp/으로 이동 되었고 이동 되는 시간도 함께 표시 되었습니다 .