Variable Crossover em vários scripts bash?

0

Eu tenho dois scripts bash em execução simultaneamente, que são idênticos, além de duas coisas.

Além de algumas outras configurações, eles executam a seguinte entrada:

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

As únicas diferenças entre os dois scripts são o endereço IP passado para a variável ${target_server} e a variável ${instance_name} .

Então, expandido, seria algo parecido com isto:

Em 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 &

Em local_script2:

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 &    

Os target_scripts são novamente dois arquivos bash separados, que são idênticos, além de algumas variáveis-chave relacionadas a caminhos no servidor relevante.

É possível que, embora estejam sendo executados em servidores separados, haja algum cruzamento das variáveis que estão sendo definidas.

por exemplo. se eu definir myVar=1 em target_script1 , poderia ser escolhido por target_script2 ?

Ou (estou certo em pensar) que, como cada um está abrindo uma conexão SSH com o servidor 'remoto', as variáveis ONLY existem apenas nos servidores remotos, e não no local.

    
por IGGt 30.09.2016 / 11:39

1 resposta

0

Não, as variáveis definidas em um script não são visíveis em outro script. Ambos os scripts estão sendo executados em seus próprios ambientes separados.

Exemplo:

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

bash -c 'echo $a'

A segunda invocação de bash nunca sempre escreve uma 1 como saída, não importa em que ordem as duas linhas são executadas ou se são executadas concorrentemente.

O único caso em que a segunda linha produziria 1 seria se houvesse uma variável de ambiente (variável de shell exportada) chamada a no ambiente chamando-a.

    
por 07.09.2017 / 15:20