여러 쉘 스크립트에서 변수 공유

여러 쉘 스크립트에서 변수 공유

여러 셸 스크립트를 하나의 큰 셸 스크립트로 통합하려고 합니다. 예를 들면 다음과 같습니다.

#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh

모든 스크립트는 동일한 변수를 공유합니다 var. var2개별 쉘 스크립트에서 변수 정의를 제거하고 이를 대형 쉘 스크립트에 넣어 변수 값을 변경할 때 한 번만 수행하면 됩니다.

그러나 내가 할 때

#!/bin/sh
var1="1"
var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

이러한 변수는 따옴표 $var1나 개별 쉘 스크립트 $var2로 인식되지 않습니다 .

이전에 이 질문을 받았다면 죄송합니다. 저는 일반적으로 스크립팅에 익숙하지 않아 무엇을 검색해야 할지 모르겠습니다.

또한 여러 변수 입력이 있는 스크립트를 반복하는 방법을 아는 것도 좋을 것입니다.

var1="1 2 3 4 5"
var2="a b c d e"
for i in $var1;do for j in $var2;do
script1.sh
script2.sh
done;done

답변1

기본 스크립트에서 스크립트 1-3을 실행하면 각각 자체 하위 쉘에서 실행되므로 상위 쉘에 정의된 변수를 인식하지 못합니다. 서브쉘에서 변수를 사용할 수 있도록 만드는 데 사용됩니다 export.

#!/bin/sh
export var1="1"
export var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

두 번째 질문과 관련된 또 다른 옵션은 변수를 스크립트에 전달하는 것입니다.위치 매개변수:

#!/bin/sh
var1="1"
var2="2"
bash script1.sh "$var1" "$var2"
bash script2.sh "$var1" "$var2"
bash script3.sh "$var1" "$var2"

$1스크립트 1-3에서 이러한 변수는 각각 및 로 사용 가능합니다 $2.

답변2

나는 이것을 시도했습니다 :

환경 설정

var1="1"
var2="2"

스크립트 파일

#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh

스크립트*.sh

source setup_env
...

관련 정보