중괄호 확장이 스크립트에서 작동하지 않습니다

중괄호 확장이 스크립트에서 작동하지 않습니다
for i in {1..40}
do 
   echo $i
done

나는 가지고있다

{1..40}

나는 다음과 같은 것을 원한다

1
2
3
and so on

i따라서 명령의 매개변수에서 해당 변수를 사용할 수 있습니다.

답변1

존재하다세게 때리다3.0 이상(및 zsh 및 ksh93)은 {1..40}1~40(포함)으로 확장됩니다. 안에POSIX 쉘대시( /bin/sh우분투에서 일반적임)와 마찬가지로 작동하지 않습니다(우리는 이 문제를 "bashism"이라고 부릅니다).

GNU 유틸리티가 있는 시스템에서는 다음 명령을 사용하여 seq이를 수행할 수 있습니다.

for i in $(seq 1 40)
do
    echo $i
done

이식성을 높이려면 루프에서 수동으로 증가 해야 합니다 $i.while

i=1
while [ $i -le 40 ]
do
    echo $i
    i=$((i+1))
done

이 휴대용 버전은 외부 명령이 없기 때문에 약간 더 빠릅니다.

관련 정보