Exportando Variáveis de Leitura

3

Estou pedindo ao usuário para inserir alguns dados usando Ler que os dados serão salvos em uma variável que será usada em outro script de shell. No entanto, por algum motivo não está funcionando.

Isto é o que eu tenho no shell script1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
export Name
sudo bash script2.sh

Script2.sh

#!/bin/bash
echo $Name

Meu entendimento é que, se eu rodar o sudo bash, o script1.sh vai pegar a entrada e transformá-la em uma variável. Usando a exportação, posso exportar isso para outro script.

BTW Estou usando o Bash Versão 4.3.11

Alguém pode me explicar o que estou fazendo errado? Meu objetivo é perguntar ao usuário seu nome completo e, em outro script, usar o nome completo dele.

    
por darol100 08.12.2014 / 06:49

1 resposta

2

Nenhuma opção do Sudo

Você pode usar o comando source para executar outro script bash no mesmo ambiente de onde veio. (Sem iniciar um subprocesso)

Script1.sh

#!/bin/bash
read -p "Enter Your Full Name: " Name
source script2.sh

Script2.sh

#!/bin/bash
echo $Name

-

Com Sudo

A razão pela qual seu exemplo não funciona é por causa do sudo. Você pode usar a opção Sudo -E para manter as variáveis do ambiente com o ambiente de superusuário.

Script1.sh

   #!/bin/bash
   read -p "Enter Your Full Name: " Name
   export Name 
   sudo -E bash script2.sh

Script2.sh

#!/bin/bash
echo $Name
    
por 08.12.2014 / 07:08