for 루프에 사용하기 위해 변수에 저장된 중괄호 확장 문자열을 확장하시겠습니까?

for 루프에 사용하기 위해 변수에 저장된 중괄호 확장 문자열을 확장하시겠습니까?

다음 스크립트가 있습니다.

FOOS=foo{1..5}
for i in `echo $FOOS` do
echo bar
done

이제 나는 중괄호 확장이 리터럴에서만 작동한다는 것을 이해합니다. 즉, 에코입니다. 그러나 이 모든 작업은 bar콘솔에 하나를 인쇄하는 것뿐입니다. 왜(문자열/중괄호 확장이 작동하지 않음)?

내가 예상하는 일은 다음과 같습니다.

  1. foo{1..5}확장( )을 나타내는 문자열을 변수에 할당합니다.FOOS
  2. replacement $FOOS이므로 기본적으로 이것을 얻었습니다 for i in 'echo foo{1..5}' do(여기서 백틱을 피할 수 없는 것 같습니다).
  3. echo를 실행했으므로 이제for i in foo1 foo2 foo3 foo4 foo5 do
  4. bar콘솔 출력을 5회 실행하고 인쇄합니다.
  5. bar유일한 출력으로 화면에 하나만 인쇄 하지 마십시오 :-)

답변1

1.

FOO=$(echo foo{1..5})

하지만 더 나은 것은 배열을 사용하는 것입니다

FOO=(foo{1..5})

2.

echo ${FOO[*]}

4.

for i in {1..5}
do
    echo bar
done

또는

for i in $(seq 5)
do
    echo bar
done

관련 정보