프로그래밍/리눅스 쉘 & utils

bash에서 파일 include 시키기 (source 명령어)

Noritorgigi 2013. 9. 11. 20:16
728x90

쉘 스크립트를 짜다보면, 스크립트 양이 많아져서, 코드의 가독성이 떨어지는 경우가 꽤 생긴다.

여러 개의 쉘로 나누어서, 상위 쉘에서 하위 쉘 여러 개를 실행하는 식으로 작성하는 방법도 있지만,

일반 프로그래밍 언어와 마찬가지로 쉘에서도 include 할 수 있는 방법이 있다.

쉘에서는 source 명령어를 이용하면, 특정 파일의 변수 및 함수를 include 시킬 수 있다.

main.sh에서 test_defs에 있는 fn_usage와 fn_echo를 호출해 보겠다. 코드 자체에 특이 사항은 없고,

일반 프로그래밍언어의 include와 다른 점은 test_defs에서 MAIN_VAR을 사용 가능하다는 것이다. 

  • 소스 코드

 

 main.sh

 #!/bin/bash

source test_defs  # test_defs를 include

MAIN_VAR=main_var

if [ $# != 1 ]
then
 fn_usage
 exit -1
fi

if [ $1 == "echo" ]
then
 fn_echo
fi

 

 

 test_defs

TEST_PATH=$PWD

TEST_VAR=test.sh
TEST_VAR="$TEST_PATH/$TEST_VAR"

function fn_usage
{
 echo "usage : $0 echo"
}


function fn_echo
{
 echo $TEST_PATH
 echo $TEST_VAR 
 $TEST_VAR         # 현재 경로의 test.sh 실행
 echo MAIN_VAR  # main.sh에 있는 변수를 사용 가능한다.
}

 

 

test.sh

 #!/bin/bash

echo "run test.sh"

 

  • 실행 방법

 

./main.sh echo

 

라고 실행하면, test_defs의 fn_echo가 실행되고, fn_echo에서는 test.sh를 실행한다.

 

./main.sh

 

라고 실행하면, fn_usage가 실행된다.

 

 

 

 

 

728x90