쉘(shell) 스크립트에서 다른 쉘 스크립트로 변수 넘기기
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
<환경변수를 이용한 방법 실행 결과>