A divisão de campos e a expansão de nome de arquivo são desativadas no RHS da atribuição de variáveis portáteis?

4

Na maioria dos shell compatíveis com POSIX, como bash . ksh , dash , mksh , pdksh , quando a atribuição de variável ocorre, divisão de campo e expansão de nome de arquivo (e expansão de contraventamento, se o shell suportar) não são executadas no RHS de atribuição:

$ IFS=/
$ a=1/2
# Field splitting and filename expansion turned off here
$ b=$a
$ IFS=
$ printf '%s\n' $b
1/2

A documentação de alguns shell ( bash , ks ) mencionado sobre isso, mas A documentação do POSIX não.

Eu posso ver esse comportamento na maioria dos shell compatíveis com POSIX, então eu pergunto se é portável desde quando a documentação POSIX não especifica isso?

    
por cuonglm 09.01.2015 / 07:02

1 resposta

6

Depende de onde você olha. De Capítulo 2, Seção 9.1 :

Each variable assignment shall be expanded for tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal prior to assigning the value.

Eu diria que essa lista é exaustiva e, como a divisão de campo não é mencionado, a falta de divisão de campos é especificada pelo POSIX.

    
por 09.01.2015 / 07:21

Tags