2011-10-16 2 views
0

bash 스크립트에서 다음과 같은 C 스타일 루프가 예상대로 작동하지 않는 이유를 누구나 설명 할 수 있습니까?bash에서 중첩 된 C 스타일 루프

스크립트 :

for ((i=0; i<3; i++)) 
do 
    for ((j==0; j<3; j++)) 
    do 
     echo "Iteration $i $j" 
    done 
done 

예상 출력 :

Iteration 0 0 
Iteration 0 1 
Iteration 0 2 
Iteration 1 0 
Iteration 1 1 
Iteration 1 2 
Iteration 2 0 
Iteration 2 1 
Iteration 2 2 

관찰 출력 :

Iteration 0 
Iteration 0 1 
Iteration 0 2 

이 나에게 아무 의미가 없습니다. 나는 내부와 외부 루프가 somwhow (매우 이상하게) 서로 "간섭"한다고 생각한다. "in"이 아닌 루프 용 비 C 스타일은 예상대로 작동합니다 ...

감사합니다. m.

답변

2

네, 그게 j == 0이라고 썼습니다. 따라서 j ++가 j의 값을 1로 만들면 동등 j == 0은 더 이상 참이 아니기 때문에 내부 루프의 1 회 반복 만 발생합니다.

+0

whooooops, yes : $ – matteo

1
for ((j==0; j<3; j++)) 

이것은 바로 여기에 오타입니까? 아니면 j가 0과 동일한 지 테스트하고 있습니까? 그건 그걸 설명 할거야 ...

+0

네, 오타였습니다 (실제로 스크립트에 오타가있는 것은 오타가 아닙니다). 그리고 왜 작동하지 않았습니까? $ – matteo