Definição variável em 'sh -c'

5

Eu tentei definir uma variável em uma string de comando 'sh -c':

sh -c "TMP=??; echo $TMP;"

Nada foi impresso.

Por que não posso definir uma variável em uma string 'sh -c'?

    
por Gwangmu Lee 08.09.2017 / 10:59

2 respostas

10
sh -c 'TMP=??; echo $TMP;'

Ao usar aspas duplas, a expansão do parâmetro ocorre quando a linha de comando é construída, ou seja, o shell não vê

TMP=??; echo $TMP;

como seu parâmetro, mas

TMP=??; echo ;

se $TMP estiver vazio no ambiente do shell de chamada.

    
por 08.09.2017 / 11:04
6
sh -c 'TMP=??; echo $TMP'

Com cotações double , o $TMP é expandido pelo shell interativo antes do sh . Com aspas simples, $TMP será expandido dentro do sh shell.

As aspas simples protegem uma string de expansões de variáveis.

    
por 08.09.2017 / 11:05