porque o loop sobre string é diferente quando está em uma variável

3

Eu estou querendo saber por que quando você iterar sobre uma variável n="1 2 3" você recebe isso:

$ n="1 2 3"; for a in $n; do echo $a $a $a; done
1 1 1
2 2 2
3 3 3

mas se você não colocar a string em uma variável primeiro, terá um comportamento completamente diferente:

$ for a in "1 2 3"; do echo $a $a $a; done
1 2 3 1 2 3 1 2 3

ou ainda mais estranho:

$ for a in ""1 2 3""; do echo $a $a $a; done
1 1 1
2 2 2
3 3 3

por que se comporta de maneira diferente se uma string está em uma variável ou não?

    
por anthonybell 14.05.2016 / 01:34

1 resposta

4

n="1 2 3"
for a in $n; do        # This will iterate over three strings, '1', '2', and '3'

for a in "1 2 3"; do   # This will iterate once with the single string '1 2 3'
for a in "$n"; do      # This will do the same

for a in ""1 2 3""; do # This will iterate over three strings, '""1', '2', and '3""'.  
                       # The first and third strings simply have a null string
                       # respectively prefixed and suffixed to them
    
por 14.05.2016 / 06:37