여러 Bash 스크립트에서 변수를 교차합니까?

여러 Bash 스크립트에서 변수를 교차합니까?

두 개의 bash 스크립트가 동시에 실행되고 있으며 두 가지를 제외하고는 동일합니다.

다른 설정 외에도 다음 항목을 실행합니다.

ssh ${target_server} "bash -s" < ${target_script} > ${home_dir}/logs/${instance_name}.log 2> ${home_dir}/logs/${instance_name}.err &

두 스크립트의 유일한 차이점은 ${target_server}IP 주소와 변수에 전달된 변수 입니다 ${instance_name}.

확장 후 모습은 다음과 같습니다.

local_script1에서:

target_script="target_script1.sh"
ssh 10.1.2.3 "bash -s" < ${target_script} > /home/user/logs/script1.log 2> /home/user/logs/script1.err &

로컬 스크립트 2에서:

target_script="target_script2.sh"
ssh 10.1.2.4 "bash -s" < ${target_script} > /home/user/logs/script2.log 2> /home/user/logs/script2.err &    

target_scripts는 관련 서버의 경로와 관련된 몇 가지 주요 변수를 제외하고는 동일한 두 개의 별도 bash 파일입니다.

별도의 서버에서 실행되고 있지만 설정된 변수에 일부 교차가 있을 수 있습니까?

예를 들어 들어가면 픽업이 myVar=1되나요 ?target_script1target_script2

또는 (제가 올바르게 생각하고 있습니까?) 각 서버가 "원격" 서버에 대한 SSH 연결을 먼저 열기 때문에 변수는 로컬 서버가 아닌 원격 서버에만 존재합니다.

답변1

아니요, 한 스크립트에 설정된 변수는 다른 스크립트에 표시되지 않습니다. 두 스크립트 모두 별도의 환경에서 실행됩니다.

예:

bash -c 'a=1; echo $a'

bash -c 'echo $a'

두 번째 전화는 bash절대로한 번1두 줄이 실행되는 순서나 동시에 실행되는지 여부에 관계없이 a를 출력으로 씁니다 .

1두 번째 줄이 출력되는 유일한 시간 은 환경 변수(내보낸 쉘 변수)가 호출되는 환경에서 호출될 때입니다.a

관련 정보