For 루프 괄호 - C와 유사한 구문

For 루프 괄호 - C와 유사한 구문

다음 구문을 사용하여 반복할 때 두 개의 대괄호가 필요한 이유는 무엇입니까?

for (( expr1; expr2; expr3 ))
do
 command1
 command2
 ..
done

아래 코드는 작동하지 않나요? 그리고 "라는 오류가 발생합니다.예기치 않은 표시 '(' 근처에 구문 오류가 있습니다."

for ( expr1; expr2; expr3 )
do
 command1
 command2
 ..
done

답변1

그 이유는 (다른 의미를 갖습니다. bash맨페이지 에서 :

        (목록) 목록은 서브쉘 환경에서 실행됩니다.
               (아래 명령 실행 환경을 참조하세요) 바꾸다
               쉘에 영향을 미치는 할당 및 내장 명령
               명령이 실행된 후에는 환경이 더 이상 유효하지 않습니다.  
               마치다. 반환 상태는 목록의 종료 상태입니다.

        ((표현하다))
               표현식은 규칙에 따라 평가됩니다.
               산술 평가는 아래에 설명되어 있습니다. 만약에  
               표현식의 값이 0이 아닌 경우 반환
               상태는 0이고, 그렇지 않으면 반환 상태는 1입니다. 이것은
               let "expression"과 정확히 동일합니다.

관련 정보