atribuição de variável e IFS

2

Wiki de Per Greg é usada a variável IFS :

  • No comando read , se vários argumentos de nome de variável forem especificado, IFS é usado para dividir a linha de entrada para que cada variável recebe um único campo da entrada.
  • Ao executar o WordSplitting em uma expansão sem aspas, o IFS é usado para dividir o valor da expansão em várias palavras.
  • Ao executar a expansão "$*" ou "${array[*]}" , o primeiro caractere de IFS é colocado entre os elementos para construir a sequência de saída final.
  • Ao fazer "${!prefix*}" , o primeiro caractere de IFS é colocado entre os nomes das variáveis para fazer a string de saída.
  • IFS é usado por complete -W sob conclusão programável

Então, minha pergunta é: por que IFS tem que entrar em ação na atribuição de variável? Por baixo, bash está aplicando a divisão de palavras na string à direita ( a:b:c:d ).

$ IFS=: s=a:b:c:d
$ echo $s
a b c d
    
por iruvar 08.12.2012 / 05:14

1 resposta

4

Isso não acontece. Você precisa citar corretamente . A divisão de palavras é aplicada a expansões sem aspas de acordo com o valor do IFS. O problema é o seu comando echo , não a atribuição.

 $ ( IFS=: s=a:b:c:d typeset -p s )
declare -- s="a:b:c:d"
    
por 08.12.2012 / 06:11

Tags