for 루프의 명령이 반복에 영향을 줍니까?

for 루프의 명령이 반복에 영향을 줍니까?

배쉬에서는

  1. C와 유사한 for 루프의 구문은 다음과 같습니다.

    for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
    

    의 실행이 세 가지 산술 표현식 , 및/또는 commands의 계산에 영향을 미쳐 반복 횟수(예: 반복 횟수)가 변경됩니까?expr1expr2expr3

    아니면 반복(예: 반복 횟수)이 commands각 반복의 실행에 영향을 받지 않습니까?

  2. for 명령의 다른 구문은 다음과 같습니다.

    for name [ [in [words ...] ] ; ] do commands; done
    

    각 반복의 실행이 commands반복 횟수(예: 반복 횟수)에 영향을 줍니까?

답변1

틀림없이:

$ bash -c 'for ((i=0;i<10;i++)); do echo $i; ((i++)); done'
0
2
4
6
8

for ((expr1; expr2; expr3)양식 에서 expr2(및 실패가 없는 expr3경우 )는 루프가 실행될 때마다 평가됩니다. expr2다른 형식에서 bash는 words언롤링(명령 대체, 와일드카드 수행 등 포함) 후 루프를 시작합니다. 따라서 name루프가 시작되면 반복 변수( )의 가능한 값에 영향을 줄 수 없습니다. 물론 당신은 할 수:

$ bash -c 'for i; do echo $i; break; done' _ a b c
a

관련 정보