반응형

OS: Ubuntu 16.04 (amd64)

Shell: bash


Bash 또는 sh 기반으로 쉘 스크립트를 만들다 보면 하나의 스크립트에서 다른 쉘 스크립트를 실행할 때가 있다. 작은 숫자나 짧은 문자열과 같이 간단한 변수는 그냥 argument로 넘겨도 되지만, 가끔은 배열(array)이나 길이가 꽤 긴 문자열을 포함해서 이런 복잡한 argument의 개수 자체가 매우 많아지면 argument를 쓰는 것이 성가신 작업이 되고 만다. 그럴 때는 환경변수를 쓰는 방법이 있다.


1. Argument passing 방법


<script_1.sh>

#!/bin/sh

EXP_NAME="wireless simulation 180206"

echo "Experiment name is $EXP_NAME"


./script_2.sh $EXP_NAME


<script_2.sh>

#!/bin/sh

EXP_NAME=$1

echo "Experiment name is $EXP_NAME"



2. 환경변수를 사용하는 방법


<script_1.sh>

#!/bin/sh


EXP_NAME="wireless simulation 180206"

FLOW_SET="0 1 2 3 4 5 6 7 8 9"


echo "Script 1 - experiment name is $EXP_NAME"

for item in $FLOW_SET

do

    # Do some tasks.

    echo "Script 1 - working on $item"

done


export EXP_NAME

export FLOW_SET

./script_2.sh


<script_2.sh>

#!/bin/sh


echo "Script 2 - experiment name from environment variable: $EXP_NAME"

for i in $FLOW_SET

do

    echo "Script 2 - working on $i"

done


<환경변수를 이용한 방법 실행 결과>




반응형
블로그 이미지

Bryan_

,