여러 셸 스크립트를 하나의 큰 셸 스크립트로 통합하려고 합니다. 예를 들면 다음과 같습니다.
#!/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
...