Por que a expansão de parâmetro acontece antes da expansão de chave neste exemplo?

0

De link , por que a expansão de parâmetros ocorre antes da expansão de chaves no exemplo a seguir?

eval rm foo.{$ext0..$extN}
    
por Tim 22.04.2016 / 17:24

1 resposta

3

Ele está fazendo uma expansão de chave não-op (expandindo para o que você começou), então expansão de parâmetro, então ajuste a expansão dentro de "eval":

# No-op brace expansion example:
echo foo.{not..understood}
# See: foo.{not..understood}

ext0=10
extN=20

# Parameter expansion
echo foo.{$ext0..$extN}
# See: foo.{10..20}

# Final brace expansion
eval echo foo.{$ext0..$extN}
# See: foo.10 foo.11 foo.12 foo.13 foo.14 foo.15 foo.16 foo.17 foo.18 foo.19 foo.20

# Now if you want to have fun with it (each eval unwraps one level of escapes)
eval eval eval eval echo foo.{\\\\$ext0..\\\\$extN}
# See: foo.10 foo.11 foo.12 foo.13 foo.14 foo.15 foo.16 foo.17 foo.18 foo.19 foo.20
    
por 22.04.2016 / 17:35