while, until, for ·çÇÁÀÇ ÄÚµå ºí·°, ½ÉÁö¾î´Â if/then Å×½ºÆ®¹® ºí·°µµ Ç¥ÁØÀÔ·ÂÀÇ ÀçÁöÇâÀ» ¹Þ¾Æ µéÀÏ ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼öÁ¶Â÷µµ ÀÌ·± ÇüÅÂÀÇ ÀçÁöÇâÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù(¿¹ 23-7 Âü°í). ÀÌ·¸°Ô ÇÏ·Á¸é, ÇØ´ç ÄÚµå ºí·°ÀÇ Á¦ÀÏ ³¡¿¡ < ¿¬»êÀÚ¸¦ µÎ¸é µË´Ï´Ù.
¿¹ 16-2. ÀçÁöÇâµÈ while ·çÇÁ
#!/bin/bash if [ -z "$1" ] then Filename=names.data # ÆÄÀÏÀ̸§ÀÌ ÁöÁ¤µÇÁö ¾ÊÀ» °æ¿ìÀÇ ±âº»°ª. else Filename=$1 fi # Filename=${1:-names.data} # ¶ó°í Çصµ µË´Ï´Ù(¸Å°³º¯¼ö ġȯ). count=0 echo while [ "$name" != Smith ] # $name À» ¿Ö Äõ¿ìÆ® ÇßÀ»±î¿ä? do read name # Ç¥ÁØÀÔ·ÂÀÌ ¾Æ´Ï¶ó $Filename ¿¡¼ ÀÐÀ½. echo $name let "count += 1" done <"$Filename" # Ç¥ÁØÀÔ·ÂÀ» $Filename ÆÄÀÏ·Î ÀçÁöÇâ. # ^^^^^^^^^^^^ echo; echo "$count °³ÀÇ À̸§À» Àоú½À´Ï´Ù."; echo # ¸î¸î ¿À·¡µÈ ½© ½ºÅ©¸³Æ® ¾ð¾î¿¡¼´Â ÀçÁöÇâµÈ ·çÇÁ°¡ ¼ºê½©·Î µ½´Ï´Ù. # ±×·¸±â ¶§¹®¿¡, $count °¡ ·çÇÁ ¹Û¿¡¼ ÃʱâȵǾî 0 À» ¸®ÅÏÇÕ´Ï´Ù. # Bash ¿Í ksh Àº °¡´ÉÇÑÇÑ ¼ºê½©À» ¾È ¶ç¿ì·Á°í Çϱ⠶§¹®¿¡ # ÀÌ ½ºÅ©¸³Æ®´Â Á¦´ë·Î µ¿ÀÛÇÕ´Ï´Ù. # Heiner Steven ÀÌ ÀÌ Á¡À» ÁöÀûÇØ ÁÖ¾ú½À´Ï´Ù. exit 0 |
¿¹ 16-3. ´Ù¸¥ ÇüÅÂÀÇ ÀçÁöÇâµÈ while ·çÇÁ
#!/bin/bash # ÀÌ ½ºÅ©¸³Æ®´Â ¾Õ¼ ¼Ò°³ÇØ µå·È´ø ½ºÅ©¸³Æ®ÀÇ ´Ù¸¥ ÇüÅÂÀÔ´Ï´Ù. # Heiner Steven ÀÌ Á¦°øÇØ ÁØ °ÍÀ¸·Î, # ÀçÁöÇâ ·çÇÁ°¡ ¼ºê½©·Î µ¹ °æ¿ì¿¡ ·çÇÁ ¾ÈÀÇ º¯¼ö°ªÀÌ # ·çÇÁ Á¾·áÈÄ ±× °ªÀ» ÀÒ¾î ¹ö¸®´Â °Í¿¡ ´ëÇÑ ÇØ°áÃ¥ÀÔ´Ï´Ù. if [ -z "$1" ] then Filename=names.data # ÆÄÀÏÀ̸§ÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» °æ¿ìÀÇ ±âº»°ª. else Filename=$1 fi exec 3<&0 # Ç¥ÁØÀÔ·ÂÀ» 3¹ø ÆÄÀÏ µð½ºÅ©¸³ÅÍ·Î ÀúÀå. exec 0<"$Filename" # Ç¥ÁØÀÔ·ÂÀ» ÀçÁöÇâ. count=0 echo while [ "$name" != Smith ] do read name # ÀçÁöÇâµÈ Ç¥ÁØÀÔ·Â($Filename)¿¡¼ ÀÐÀ½. echo $name let "count += 1" done <"$Filename" # ·çÇÁ´Â $Filename ÆÄÀÏ¿¡¼ ÀÔ·ÂÀ» ¹ÞÀ½. # ^^^^^^^^^^^^ exec 0<&3 # ¿ø·¡ Ç¥ÁØÀÔ·ÂÀ» º¹±¸. exec 3<&- # Àӽà ÆÄÀÏ µð½ºÅ©¸³ÅÍ 3¹øÀ» ´ÝÀ½. echo; echo "$count °³ÀÇ À̸§À» Àоú½À´Ï´Ù."; echo exit 0 |
¿¹ 16-4. ÀçÁöÇâµÈ until ·çÇÁ
#!/bin/bash # ¾ÕÀÇ ¿¹Á¦¿Í ¶È°°À¸³ª "until" ·çÆ®¸¦ »ç¿ë. if [ -z "$1" ] then Filename=names.data # ÆÄÀÏÀ̸§ÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» °æ¿ìÀÇ ±âº»°ª. else Filename=$1 fi # while [ "$name" != Smith ] until [ "$name" = Smith ] # != ¸¦ = ·Î ¹Ù²ãÁÖ¼¼¿ä. do read name # Ç¥ÁØÀÔ·ÂÀÌ ¾Æ´Ï¶ó $Filename ¿¡¼ ÀÐ¾î µéÀÔ´Ï´Ù. echo $name done <"$Filename" # Ç¥ÁØÀÔ·ÂÀ» $Filename ÆÄÀÏ·Î ÀçÁöÇâ. # ^^^^^^^^^^^^ # ¾Õ ¿¹Á¦ÀÇ "while" ·çÇÁ¿Í ¶È°°Àº °á°ú°¡ ³ª¿É´Ï´Ù. exit 0 |
¿¹ 16-5. ÀçÁöÇâµÈ for ·çÇÁ
#!/bin/bash if [ -z "$1" ] then Filename=names.data # ÆÄÀÏÀ̸§ÀÌ ÁöÁ¤µÇÁö ¾ÊÀ» °æ¿ìÀÇ ±âº»°ª. else Filename=$1 fi line_count=`wc $Filename | awk '{ print $1 }'` # ´ë»ó ÆÄÀÏÀÇ ÁÙ ¼ö. # "for" ·çÇÁ¿¡¼ Ç¥ÁØÀÔ·ÂÀ» ÀçÁöÇâ ÇÏ´Â°Ô ¾ÆÁÖ ºÎÀÚ¿¬½º·¯¿ö º¸ÀÌ°í # ±¸ÇöÇϱ⠱î´Ù·Ó°ÚÁö¸¸, ¿©·¯ºÐÀÌ ÃæºÐÈ÷ ¶È¶ÈÇÏ´Ù¸é °¡´ÉÇÕ´Ï´Ù. # # Á» ´õ °£´ÜÇÏ°Ô ÇÏ·Á¸é line_count=$(wc < "$Filename") for name in `seq $line_count` # "seq"°¡ ¿¬¼ÓµÈ ¼ýÀÚ¸¦ Ãâ·ÂÇÑ´Ù´Â °Å, ±â¾ï³ª½ÃÁÒ? # while [ "$name" != Smith ] -- "while" ·çÇÁº¸´Ù ´õ º¹ÀâÇÕ´Ï´Ù. -- do read name # Ç¥ÁØÀÔ·ÂÀÌ ¾Æ´Ñ $Filename ¿¡¼ ÀÐ¾î µéÀÔ´Ï´Ù. echo $name if [ "$name" = Smith ] # ÀÌ·± ÀÛ¾÷À» Ãß°¡ÀûÀ¸·Î µ¡ºÙ¿©¾ß ÇÕ´Ï´Ù. then break fi done <"$Filename" # Ç¥ÁØÀÔ·ÂÀÌ $Filename ¿¡¼ ÀçÁöÇâ µÊ. # ^^^^^^^^^^^^ exit 0 |
¹Ù·Î ¾ÕÀÇ ¿¹Á¦¸¦ Á¶±Ý º¯°æÇÏ¸é ·çÇÁÀÇ Ãâ·Âµµ ÀçÁöÇâ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹ 16-6. ÀçÁöÇâµÈ for ·çÇÁ(Ç¥ÁØÀÔ·Â, Ç¥ÁØÃâ·Â ¸ðµÎ ÀçÁöÇâµÊ)
#!/bin/bash if [ -z "$1" ] then Filename=names.data # ÆÄÀÏÀ̸§ÀÌ ÁöÁ¤µÇÁö ¾ÊÀ» °æ¿ìÀÇ ±âº»°ª. else Filename=$1 fi Savefile=$Filename.new # °á°ú¸¦ ÀúÀåÇÒ ÆÄÀÏÀ̸§. FinalName=Jonah # "read" ½Ã¿¡ ¸¶Áö¸· ÀÔ·ÂÀÌ µÉ À̸§. line_count=`wc $Filename | awk '{ print $1 }'` # ´ë»ó ÆÄÀÏÀÇ ÁÙ ¼ö. for name in `seq $line_count` do read name echo "$name" if [ "$name" = "$FinalName" ] then break fi done < "$Filename" > "$Savefile" # Ç¥ÁØÀÔ·ÂÀ» $FilenameÀ¸·Î ÀçÁöÇâÇÏ°í, # ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ±× °á°ú¸¦ ¹é¾÷ ÆÄÀÏ·Î ÀúÀå. exit 0 |
¿¹ 16-7. ÀçÁöÇâµÈ if/then Å×½ºÆ®
#!/bin/bash if [ -z "$1" ] then Filename=names.data # ÆÄÀÏÀ̸§ÀÌ ÁöÁ¤µÇÁö ¾ÊÀ» °æ¿ìÀÇ ±âº»°ª. else Filename=$1 fi TRUE=1 if [ "$TRUE" ] # if true ¿Í if : µµ µ¿ÀÛÇÕ´Ï´Ù. then read name echo $name fi <"$Filename" # ^^^^^^^^^^^^ # ÆÄÀÏÀÇ Ã¹¹ø° ÁÙ¸¸ ÀÐ¾î µéÀÓ. # "if/then" Å×½ºÆ®¹®Àº ·çÇÁ¾È¿¡¼ ¾²ÀÌÁö ¾Ê´Â ÇÑ, ¹Ýº¹Çؼ ºñ±³ÇÒ ¹æ¹ýÀÌ ¾ø½À´Ï´Ù. exit 0 |
ÄÚµå ºí·°ÀÇ Ç¥ÁØÃâ·ÂÀ» ÀçÁöÇâÇÏ´Â °ÍÀº ±× Ãâ·ÂÀ» ÆÄÀÏ·Î ÀúÀåÇÏ´Â È¿°ú¸¦ °¡Á®¿É´Ï´Ù. ¿¹ 4-2¸¦ Âü°íÇϼ¼¿ä.
Âü°í: Here documents´Â Ưº°ÇÑ Á¾·ùÀÇ ÀçÁöÇâµÈ ÄÚµå ºí·°ÀÔ´Ï´Ù.