두 가지 이유로 필요한 for-loop 스 니펫이 작동하지 않았습니다.
(($i += 5))
-여기서 $i
값이 확장됩니다 i
. 따라서 확장은 ((375 += 5))
말이되지 않는 다른 리터럴 숫자에 리터럴 숫자를 할당하려고하는 것과 같습니다 . 이것은 일반적으로 ((i += 5))
( $
변수를 확장 하지 않음) 으로 달성됩니다.
- 는
{375..3500}
루프의 첫 번째 반복 전에 확장됩니다. 숫자 목록이됩니다 375 376 ... 3499 3500
. 루프가 반복 i
될 때마다 각 번호에 하나씩 할당됩니다. 따라서 각 반복이 시작될 때 i
1의 단계로 계산되어 목록의 다음 값으로 재 할당됩니다. ((i += 5))
효과적으로 아무 것도 수행 하지 않습니다-5를 i에 추가하지만 i는 처음에 다시 할당됩니다. 다음 반복.
나는 for (( ; ; ))
대답을 가장 좋아한다고 생각 하지만 여기에 당신이 생각하게하는 몇 가지 대안이 있습니다.
우리는 5의 배수를 다루고 있으며 {a..b..i}
확장은 bash 버전 3.2.57 (1) (OS X에서)에서 지원되지 않기 때문에 대신이 약간 이상한 일을 할 수 있습니다.
for i in 375 {38..349}{0,5} 3500; do
echo $i
done
이것은 bash를 사용하여 직교 곱을 만드는 방법을 보여줍니다.
필자는 일반적으로 for 루프가 가장 편리한 방법이라고 생각하지만 관심이 있다면 while 루프 (BASIC에 조금 더 가까운) 프로그램을 사용할 수 있습니다.
count=375
while (( count <= 3500 )); do
echo $count
(( count += 5 ))
done