이 예에서 중괄호 확장 전에 매개변수 확장이 발생하는 이유는 무엇입니까?

이 예에서 중괄호 확장 전에 매개변수 확장이 발생하는 이유는 무엇입니까?

~에서https://unix.stackexchange.com/a/7739/674, 아래 예에서 중괄호 확장 전에 매개변수 확장이 발생하는 이유는 무엇입니까?

eval rm foo.{$ext0..$extN}

답변1

먼저 무작동 중괄호 확장(시작한 항목으로 확장)을 수행한 다음 인수 확장을 수행하고 "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

관련 정보