bash - Atribuição de variáveis com espaço após o sinal(=)?




shell (2)

No Bash, a atribuição de valores a variáveis ​​é feita usando T=content , sem espaços antes ou depois do sinal de igual.

Apesar disso, vi o seguinte em um script de shell PWD= /bin/pwd contendo um espaço no lado direito do sinal de igual.

Qual é o propósito de ter um espaço?


Não estamos falando de duas coisas diferentes aqui.

Se tivéssemos

PWD=/bin/pwd

atribuiríamos /bin/pwd a PWD .

Mas

PWD= /bin/pwd

significa que chamamos /bin/pwd com PWD definido para a sequência vazia. Essa atribuição afeta apenas o subprocesso, não o atual.


No exemplo PWD= /bin/pwd , a variável PWD é configurada para a cadeia vazia antes de executar o comando /bin/pwd . A alteração só entra em vigor para essa linha.

Isso pode ser útil para fazer uma alteração temporária em uma variável com a finalidade de executar um comando, sem afetar o valor original. Outro exemplo disso seria ao usar read , para definir um IFS diferente:

IFS=, read a b c <<<"comma,separated,list"

Isso define o separador de campos como vírgula, para que a , b sejam lidos corretamente. Após essa linha, o IFS retorna ao valor padrão, portanto, o restante do script não é afetado.

Talvez em alguns sistemas, a saída do comando pwd seja afetada pelo valor da variável PWD , portanto, isso evita que os problemas causados ​​pela PWD sejam substituídos em outros lugares.





sh