다음 스크립트가 있습니다.
FOOS=foo{1..5}
for i in `echo $FOOS` do
echo bar
done
이제 나는 중괄호 확장이 리터럴에서만 작동한다는 것을 이해합니다. 즉, 에코입니다. 그러나 이 모든 작업은 bar
콘솔에 하나를 인쇄하는 것뿐입니다. 왜(문자열/중괄호 확장이 작동하지 않음)?
내가 예상하는 일은 다음과 같습니다.
foo{1..5}
확장( )을 나타내는 문자열을 변수에 할당합니다.FOOS
- replacement
$FOOS
이므로 기본적으로 이것을 얻었습니다for i in 'echo foo{1..5}' do
(여기서 백틱을 피할 수 없는 것 같습니다). - echo를 실행했으므로 이제
for i in foo1 foo2 foo3 foo4 foo5 do
bar
콘솔 출력을 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