10.3. ·çÇÁ Á¦¾î

·çÇÁÀÇ µ¿ÀÛ¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ¸í·É¾îµé

break, continue

break¿Í continue ·çÇÁ Á¦¾î ¸í·É¾î [1] ´Â ´Ù¸¥ ÇÁ·Î±×·¡¹Ö ¾ð¾îµé°ú Á¤È®È÷ °°Àº µ¿ÀÛÀ» ÇÕ´Ï´Ù. break ¸í·É¾î´Â ÀÚ½ÅÀÌ ¼ÓÇØ ÀÖ´Â ·çÇÁ¸¦ ³¡³»°í, continue´Â ÇØ´ç ·çÇÁ »çÀÌŬ ³»¿¡ ³²¾Æ ÀÖ´Â ³ª¸ÓÁö ¸í·É¾îµéÀ» °Ç³Ê ¶Ù°í ´ÙÀ½ ´Ü°èÀÇ ·çÇÁ¸¦ ¼öÇàÇÕ´Ï´Ù.

¿¹ 10-19. ·çÇÁ¿¡¼­ break¿Í continueÀÇ ¿µÇâ

#!/bin/bash

LIMIT=19  # »óÇѼ±

echo
echo "3,11À» Á¦¿ÜÇϰí 1ºÎÅÍ 20±îÁö Ãâ·Â."

a=0

while [ $a -le "$LIMIT" ]
do
 a=$(($a+1))

 if [ "$a" -eq 3 ] || [ "$a" -eq 11 ]  # 3,11À» Á¦¿Ü
 then
   continue  # À̹ø ·çÇÁÀÇ ³ª¸ÓÁö ºÎºÐÀ» °Ç³Ê¶Ü.
 fi

 echo -n "$a "
done 

# µ¶ÀÚµéÀ» À§ÇÑ ¿¬½À¹®Á¦:
# ·çÇÁ°¡ ¿Ö 20±îÁö ÂïÀ»±î¿ä?

echo; echo

echo 1ºÎÅÍ 20±îÁö ÂïÁö¸¸ 2´ÙÀ½¿¡ ¹«½¼ ÀÏÀΰ¡°¡ ÀϾ´Ï´Ù.

##################################################################

# ¶È°°Àº ·çÇÁÁö¸¸ 'continue'¸¦ 'break'·Î ¹Ù²å½À´Ï´Ù.

a=0

while [ "$a" -le "$LIMIT" ]
do
 a=$(($a+1))

 if [ "$a" -gt 2 ]
 then
   break  # ·çÇÁ ³ª¸ÓÁö¸¦ ¸ðµÎ °Ç³Ê¶Ü.
 fi

 echo -n "$a "
done

echo; echo; echo

exit 0

break ¸í·É¾î´Â ¸Å°³º¯¼ö¸¦ ¹ÞÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¸Å°³º¯¼ö ¾ø´Â break´Â ÀÚ½ÅÀÌ ¼ÓÇØ ÀÖ´Â Á¦ÀÏ ¾ÈÂÊ ·çÇÁ¸¦ ³¡³»Áö¸¸, break NÀº N ·¹º§ÀÇ ·çÇÁ¸¦ ºüÁ®³ª°©´Ï´Ù.

¿¹ 10-20. ¿©·¯ ´Ü°èÀÇ ·çÇÁ¿¡¼­ Å»ÃâÇϱâ

#!/bin/bash
# break-levels.sh: ·çÇÁ¿¡¼­ Å»ÃâÇϱâ.

# "break N" Àº N ·¹º§ÀÇ ·çÇÁ¸¦ ºüÁ®³ª°©´Ï´Ù.

for outerloop in 1 2 3 4 5
do
  echo -n "$outerloop ±×·ì:   "

  for innerloop in 1 2 3 4 5
  do
    echo -n "$innerloop "

    if [ "$innerloop" -eq 3 ]
    then
      break  # break 2  ¶ó°í ÇÏ¸é ¾î¶»°Ô µÉ±î¿ä?
             # (¾ÈÂʰú ¹Ù±ùÂÊ ·çÇÁ ¸ðµÎ¿¡¼­ "Å»Ãâ"(break)ÇÕ´Ï´Ù.)
    fi
  done

  echo
done  

echo

exit 0

continue ¸í·É¾îµµ break¿Í ºñ½ÁÇÏ°Ô ¸Å°³º¯¼ö¸¦ ¹Þ¾Æ µéÀϼö ÀÖ½À´Ï´Ù. ¸Å°³º¯¼ö ¾ø´Â continue´Â ÀÚ½ÅÀÌ ¼ÓÇÑ ·çÇÁÀÇ ÇöÀç ÀÛ¾÷À» ³¡³»°í ´ÙÀ½¹øÀ¸·Î °Ç³Ê ¶ÙÁö¸¸ continue NÀº ÀÚ½ÅÀÌ ¼ÓÇÑ ·çÇÁ ·¹º§ÀÇ ¸ðµç ´Ü°è¸¦ °Ç³Ê ¶Ù°í N ·¹º§ À§¿¡ ¼ÓÇÏ´Â ·çÇÁÀÇ ´ÙÀ½ ´Ü°è·Î °Ç³Ê ¶Ý´Ï´Ù.

¿¹ 10-21. ´õ »óÀ§ ·çÇÁ ·¹º§¿¡¼­ °è¼ÓÇϱâ(continue)

#!/bin/bash
# "continue N" ¸í·É¾î, N ¹øÂ° ·çÇÁ¿¡¼­ °è¼ÓÇϱâ(continue).

for outer in I II III IV V           # ¹Ù±ùÂÊ ·çÇÁ
do
  echo; echo -n "Group $outer: "

  for inner in 1 2 3 4 5 6 7 8 9 10  # ¾ÈÂÊ ·çÇÁ
  do

    if [ "$inner" -eq 7 ]
    then
      continue 2  # "¹Ù±ùÂÊ ·çÇÁ"ÀÎ 2¹øÂ° ·¹º§ÀÇ ·çÇÁ¿¡¼­ °è¼Ó ÁøÇàÇÕ´Ï´Ù.
                  # À­ÁÙÀ» ±×³É "continue"¶ó°í ÇÏ¸é º¸ÅëÀÇ ·çÇÁ µ¿ÀÛÀÌ ÀϾ´Ï´Ù.
    fi  

    echo -n "$inner "  # 8 9 10 Àº Àý´ë ¿¡ÄÚµÇÁö ¾Ê½À´Ï´Ù.
  done  

done

echo; echo

# µ¶ÀÚµéÀ» À§ÇÑ ¿¬½À¹®Á¦:
# "continue N"À» ¾²´Â ¾µ¸ðÀÖ´Â ½ºÅ©¸³Æ®¸¦ Â¥ º¸¼¼¿ä.

exit 0

°æ°í

continue NÀº ¾Æ¹«¸® ÀÇ¹Ì ÀÖ´Â »óȲ¿¡¼­ ½è´õ¶óµµ ÀÌÇØÇÏ±â ¾î·Æ°í ¾²±â ±î´Ù·Ó±â ¶§¹®¿¡ ¾È ¾²´Â°Ô Á¦ÀÏ ÁÁ½À´Ï´Ù.

ÁÖ¼®

[1]

while³ª case°¡ Ű¿öµåÀÎ ¹Ý¸é¿¡ break³ª continue´Â ½© ³»Àå¸í·ÉÀÔ´Ï´Ù.