[shell script] break, continue
break
: break를 읽은 시점에서 바로 break가 속해 있는 반복문을 종료
continue
: continue를 읽은 시점에서 그 아래로의 코드는 스킵하고 다음 반복 진행
예를 들어, 0부터 10까지 커지는 인덱스 내에서 인덱스가 5일 때 각각 break
와 continue
를 써보면 차이가 극명히 드러납니다.
$ cat test1
#!/bin/bash
for (( i = 0; i <= 10; i++ ))
do
if (( $i == 5 ))
then
break
fi
echo "i -> $i"
done
$ ./test1
i -> 0
i -> 1
i -> 2
i -> 3
i -> 4
위와 같이 i = 5
일 때 break
를 만나면 for
문을 아예 종료시켜버립니다.
그래서 4
까지만 출력되었습니다.
반면, break
자리에 continue
를 사용한다면 어떻게 될까요?
$ cat test1
#!/bin/bash
for (( i = 0; i <= 10; i++ ))
do
if (( $i == 5 ))
then
continue
fi
echo "i -> $i"
done
$ ./test1
i -> 0
i -> 1
i -> 2
i -> 3
i -> 4
i -> 6
i -> 7
i -> 8
i -> 9
i -> 10
continue
를 사용하면 i = 5
일 때 continue
를 읽어들이고, 그 아래에 코드를 스킵하고 다음 반복을 진행합니다.
그래서 출력된 결과에는 5
를 제외하고 나머지 결과들이 출력되는 것입니다.
이중 for문에서 바깥쪽 루프를 종료 또는 스킵 하는 법
break
는 break
가 속해 있는 반복문을 종료합니다.
j = 2
일 때, break
를 만나면 j
를 돌리는 for
문이 완전히 종료되어 뒤에 j = 3, 4
의 경우를 실행하지 않습니다.
바깥의 i
를 돌리는 for
문에는 영향이 전혀 없습니다.
$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
break
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
i -> 2
j -> 1
i -> 3
j -> 1
i -> 4
j -> 1
하지만 여기서 바깥쪽 i
를 돌리는 for
문을 종료하는 방법이 있습니다.
break n
n
의 기본값은 1
로 현재 속해 있는 루프를 나타냅니다.
숫자가 하나씩 증가할 때마다 바깥쪽
루프를 가리킵니다.
break 2
를 주게 되면 바깥쪽 i
를 돌리는 루프가 종료됩니다.
$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
break 2
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
continue
는 continue
가 속해 있는 반복문의 내용에서 continue
다음 코드들을 스킵합니다.
j = 2
일 때 continue
를 만나면 j
를 돌리는 for
문 안에서 continue
아래의 내용을 생략하고 다음 반복을 진행하는 것을 볼 수 있습니다.
바깥의 i
를 돌리는 for
문에는 영향이 전혀 없습니다.
$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
continue
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
j -> 3
j -> 4
i -> 2
j -> 1
j -> 3
j -> 4
i -> 3
j -> 1
j -> 3
j -> 4
i -> 4
j -> 1
j -> 3
j -> 4
continue
도 마찬가지로 매개변수를 주면 바깥쪽 루프의 내용을 스킵할 수 있습니다.
$ cat test1
#!/bin/bash
for (( i = 1; i <= 4; i++ ))
do
echo "i -> $i"
for (( j = 1; j <= 4; j++ ))
do
if (( $j == 2 ))
then
continue 2
fi
echo " j -> $j"
done
done
$ ./test1
i -> 1
j -> 1
i -> 2
j -> 1
i -> 3
j -> 1
i -> 4
j -> 1
Author And Source
이 문제에 관하여([shell script] break, continue), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@khyup0629/shell-script-break-continue저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)