Não é possível exportar ou definir variável no novo shell

1

Eu experimentei algo estranho ao trabalhar em um problema. Este comando parece não funcionar. (Usando 'para preencher a linha em branco).

Ao usar a exportação

> /bin/bash -c "echo $FOO; export FOO=BAR; echo $FOO"
'
'

Este comando, no entanto, funciona como esperado.

> echo $FOO; FOO=BAR; export FOO=BAR; echo $FOO
'
BAR

Mesmo problema ao definir com =

> /bin/bash -c "echo $FOO; FOO=BAR; echo $FOO"
'
'

Este comando, no entanto, funciona como esperado.

> echo $FOO; FOO=BAR; FOO=BAR; echo $FOO
'
BAR

Alguma ideia do que está acontecendo?

    
por Will 07.11.2013 / 16:58

1 resposta

2

É um problema com as aspas duplas. Seu shell (o externo) expandirá $FOO antes de executar o comando. Se você definir $FOO para algo (digamos que "FOO") você realmente executa este comando.

/bin/bash -c "echo FOO; export FOO=BAR; echo FOO"

E se você não definir o FOO, execute este comando

/bin/bash -c "echo ; export FOO=BAR; echo "

Por favor, use aspas simples para obter o que você espera.

/bin/bash -c 'echo $FOO; FOO=BAR; echo $FOO'
    
por 07.11.2013 / 17:15