이 while 루프 인스턴스에서 "계속"이 작동하지 않는 이유는 무엇입니까?

이 while 루프 인스턴스에서 "계속"이 작동하지 않는 이유는 무엇입니까?

유닉스를 배우고 루핑을 연습하려고 합니다. 명령문이 발생한 후 출력이 일시 중지되는 이유를 누군가 설명할 수 있습니까 continue?

그 후 출력이 일시 중지되고 Count : 4+로 종료됩니다.CtrlC

암호:

COUNT=0

while [ $COUNT -lt 10 ]
do
  if [ $COUNT = 5 ]
  then
     continue
  fi
  echo "Count : $COUNT"
  ((COUNT++))
done

echo "while loop finished"
exit 0

답변1

그 이유는 매우 간단합니다. 귀하의 continue명령문은 쉘이 다음 루프 반복으로 즉시 점프하도록 지시합니다.

안타깝게도 이 ((COUNT++))부분을 건너뛰게 됩니다. 즉, COUNT5에 도달하면 절대 증가하지 않고 조건이 while충족되지 않으므로 해당 지점부터 무한 루프에 빠지게 됩니다.

COUNT@steeldriver가 가정하는 것처럼 of 에서 루프를 중단하려는 경우 5break문이 올바른 선택이 될 것입니다.

전체적으로 쉘 스크립트에 대해 더 자세히 배우고 싶다면 다음을 추천합니다.GreyCat&Lhunath의 배쉬 가이드. 또는 스크립트를 실행하여shellcheck(많은 운영 체제 저장소에서 독립 실행형 프로그램으로도 사용 가능)은 구문 오류 등을 식별하는 데 도움이 될 수 있습니다.

관련 정보