Como definir várias variáveis env do canal stdout [duplicado]

0

Eu tenho um monte de comandos de shell canalizados que dão alguma saída env. Eu quero configurá-los como variáveis env para um comando adicional para adicionar à cadeia

Kevins-MBP:ops kevzettler$ eb printenv | tail -n +2 | sed "s/ //g"
NODE_ENV=staging
RDSPassword=changme
RDSHost=sa1c7quehy7pes5.lolol.us-east-1.rds.amazonaws.com
RDSUsername=derp
    
por kevzettler 28.03.2016 / 21:01

1 resposta

3

Você provavelmente quer:

source <(eb printenv | tail -n +2 | sed 's/ //g; s/^/export /')
your_next_command_that_uses_those_env_vars

Um teste:

  • defina uma função que imprima suas definições de variáveis de amostra

    function eb {
    echo "
    NODE_ENV=staging
    RDSPassword=changme
    RDSHost=sa1c7quehy7pes5.lolol.us-east-1.rds.amazonaws.com
    RDSUsername=derp"
    }
    
  • ligue para ver o que o pipeline produz

    $ eb printenv | tail -n +2 | sed 's/ //g; s/^/export /'
    export NODE_ENV=staging
    export RDSPassword=changme
    export RDSHost=sa1c7quehy7pes5.lolol.us-east-1.rds.amazonaws.com
    export RDSUsername=derp
    
  • fonte dessa saída, teste o shell atual e um novo shell para ver se ele é exportado

    $ source <(eb printenv | tail -n +2 | sed 's/ //g; s/^/export /')
    $ echo $NODE_ENV
    staging
    $ sh -c 'echo $NODE_ENV'
    staging
    
por 28.03.2016 / 21:10