No bash, como posso exportar / definir uma variável global a partir de uma função de leitura dentro de um script, para uso em um segundo script e um arquivo de configuração posteriormente?

0

Por exemplo. Eu tenho dois scripts distintos, que eu quero permanecer e executar separadamente. O Script 1 utiliza uma função de leitura solicitando um nome de arquivo desejado, permite apenas dizer name1, faz a coisa e gera o arquivo com name1.

Eu preciso do segundo script para utilizar name1 como parte de uma entrada, bem como um arquivo de configuração separado do script que é capaz de apontar para name1 [assumindo que o diretório é fixo, mas o nome do arquivo é variável.]

Para fazer isso, imagino que precisaria de uma maneira de exportar uma variável global. O modo como eu a vejo agora é algo assim:

read -p "What do you want this file to be called?: " name1
export name1=$name1

executando o seguinte como

. script1.sh

e depois

echo $name1

produz os resultados corretos, mas como posso replicar esse comportamento sem ter que especificar a execução do script no shell atual com. - assumindo que a próxima pessoa apenas executaria ./script1.sh ou algo assim, existe uma maneira de exportar globalmente? Dessa forma, eu poderia usar a variável $ name1 tanto no arquivo de configuração quanto no script2.

Muito obrigado antecipadamente.

    
por CharlieTango92 25.04.2018 / 18:48

1 resposta

2

Você não pode realmente. Um script não pode definir uma variável de ambiente no ambiente do shell pai.

Uma solução seria, obviamente, criar um terceiro script que execute os outros dois scripts da maneira específica que eles precisam ser executados. Ele originaria o primeiro script e depois executaria o segundo script.

Como alternativa, combine os dois scripts em um script. Se você dividi-los para "manter as coisas separadas", então você pode fazer o mesmo com funções em um e o mesmo script, se desejar.

Além disso,

export name1=$name1

pode ser encurtado para

export name1
    
por 25.04.2018 / 18:56