if/then Àº ¸í·É¾î ¸ñ·ÏÀÇ Á¾·á »óŰ¡ 0 (À¯´Ð½º °ü·Ê»ó 0Àº "¼º°ø"À» ³ªÅ¸³»¹Ç·Î)ÀÎÁö Å×½ºÆ®¸¦ ÇØº¸°í ¸Â´Ù¸é ´ÙÀ½ ¸í·É¾îµéÀ» ½ÇÇà½Ãŵ´Ï´Ù.
Å×½ºÆ® Àü¿ë ¸í·É¾î·Î [ (¿ÞÂÊ ´ë°ýÈ£ Ư¼ö ¹®ÀÚ)¶õ °ÍÀÌ ÀÖ½À´Ï´Ù. test ¸í·É¾î¿Í µ¿ÀǾîÀ̰í, È¿À²ÀûÀÎ ÀÌÀ¯·Î ³»Àå ¸í·ÉÀÔ´Ï´Ù. ÀÌ ¸í·É¾î´Â ÀÚ½ÅÀÇ ÀÎÀÚ¸¦ ºñ±³½ÄÀ̳ª ÆÄÀÏ Å×½ºÆ®·Î ÀνÄÇØ ÇØ´ç ¿¬»êÀÇ °á°ú¿¡ µû¸¥ Á¾·á »óÅÂ(ÂüÀº 0, °ÅÁþÀº 1)¸¦ ¸®ÅÏÇÕ´Ï´Ù.
¶ÇÇÑ, ´Ù¸¥ ¾ð¾î¸¦ ¾²´ø ÇÁ·Î±×·¡¸Ó¿¡°Ô ¾î´À Á¤µµ ´õ Ä£¼÷ÇÑ ºñ±³ ¿¬»êÀ» Á¦°øÇØ ÁÖ´Â [[ ... ]]¸¦ Bash 2.02 ¹öÀüºÎÅÍ Á¦°øÇÕ´Ï´Ù. ÁÖÀÇÇÒ Á¡Àº [[°¡ ¸í·É¾î°¡ ¾Æ´Ñ Ű¿öµå¶ó´Â °ÍÀÔ´Ï´Ù.
Bash ´Â [[ $a -lt $b ]] ¸¦ Á¾·á »óŸ¦ ¸®ÅÏÇÏ´Â ÇϳªÀÇ ¿ä¼Ò·Î ÀÌÇØÇÕ´Ï´Ù.
(( ... )) ¿Í let ... Àº ÀÚ½ÅÀÌ °è»êÇÑ »ê¼ú½ÄÀÌ 0ÀÌ ¾Æ´Ñ °ªÀ» °¡Áú °æ¿ì¿¡ Á¾·á »óÅ 0À» ¸®ÅÏÇÕ´Ï´Ù. µû¶ó¼, ÀÌ·± »ê¼ú È®ÀåÀº »ê¼ú ºñ±³¸¦ ÇÒ ¶§ ¾µ ¼ö ÀÖ½À´Ï´Ù.
let "1<2" ´Â 0 À» ¸®ÅÏ("1<2" °¡ "1" ·Î È®ÀåµÇ¹Ç·Î) (( 0 && 1 )) Àº 1 À» ¸®ÅÏ("0 && 1" ÀÌ "0" À¸·Î È®ÀåµÇ¹Ç·Î) |
if ´Â ´ë°ýÈ£·Î Á¶°ÇÀ» ¹Áö ¾Ê°íµµ ¾Æ¹« ¸í·É¾î³ª Å×½ºÆ® ÇÒ ¼ö ÀÖ½À´Ï´Ù.
if cmp a b > /dev/null # °á°ú¸¦ ¹«½Ã. then echo "ÆÄÀÏ a ¿Í b ´Â °°½À´Ï´Ù." else echo "ÆÄÀÏ a ¿Í b ´Â ´Ù¸¨´Ï´Ù." fi if grep -q Bash file then echo "file¿¡´Â Bash°¡ Àû¾îµµ ÇÑ ¹ø ÀÌ»ó ³ª¿É´Ï´Ù." fi if ¿¡·¯°¡_¾øÀ»_¶§_Á¾·á_»óŰ¡_0ÀÎ_¸í·É¾î then echo "¼º°ø." else echo "½ÇÆÐ." fi |
if/then Àº ÁßøµÈ ºñ±³³ª Å×½ºÆ®°¡ °¡´ÉÇÕ´Ï´Ù.
if echo "´ÙÀ½¿¡ ³ª¿À´Â *if* ´Â ù¹øÂ° *if* ÀÇ ºñ±³ ´ë»ó¿¡ Æ÷ÇԵ˴ϴÙ." if [[ $comparison = "integer" ]] then (( a < b )) else [[ $a < $b ]] fi then echo '$a ´Â $b º¸´Ù Àû½À´Ï´Ù.' fi |
ÀÌ ÀÚ¼¼ÇÑ "if-test" È®Àå ¿¹Á¦µéÀº Stephane Chazelas°¡ Á¦°øÇØ ÁÖ¾ú½À´Ï´Ù.
¿¹ 7-1. ¹«¾ùÀÌ ÂüÀΰ¡?
#!/bin/bash echo echo "\"0\" Å×½ºÆ®" if [ 0 ] # zero then echo "0 Àº Âü." else echo "0 Àº °ÅÁþ." fi echo echo "\"NULL\" Å×½ºÆ®" if [ ] # NULL (empty condition) then echo "NULL Àº Âü." else echo "NULL Àº °ÅÁþ." fi echo echo "\"xyz\" Å×½ºÆ®" if [ xyz ] # ¹®ÀÚ¿ then echo "ÀÓÀÇÀÇ ¹®ÀÚ¿Àº Âü." else echo "ÀÓÀÇÀÇ ¹®ÀÚ¿Àº °ÅÁþ." fi echo echo "\"\$xyz\" Å×½ºÆ®" if [ $xyz ] # $xyz °¡ ³ÎÀÎÁö Å×½ºÆ®... # ÇÏÁö¸¸ ´ÜÁö ÃʱâȵÇÁö ¾ÊÀº º¯¼öÀÏ ¶§¸¸. then echo "ÃʱâÈ ¾È µÈ º¯¼ö´Â Âü." else echo "ÃʱâÈ ¾È µÈ º¯¼ö´Â °ÅÁþ." fi echo echo "\"-n \$xyz\" Å×½ºÆ®" if [ -n "$xyz" ] # Á» ´õ ¾î·Æ°Ô º¸À̰Ô. then echo "ÃʱâÈ ¾È µÈ º¯¼ö´Â Âü." else echo "ÃʱâÈ ¾È µÈ º¯¼ö´Â °ÅÁþ." fi echo xyz= # ³Î °ªÀ¸·Î ÃʱâÈ. echo "\"-n \$xyz\" Å×½ºÆ®" if [ -n "$xyz" ] then echo "³Î º¯¼ö´Â Âü." else echo "³Î º¯¼ö´Â °ÅÁþ." fi echo # "false"°¡ ÂüÀÏ ¶§. echo "\"false\" Å×½ºÆ®" if [ "false" ] # "false"´Â ±×³É ¹®ÀÚ¿ °°ÁÒ? then echo "\"false\" ´Â Âü." #+ ±×·¡¼ ÂüÀÌ µÇ³×¿ä. else echo "\"false\" ´Â °ÅÁþ." fi echo echo "\"\$false\" Å×½ºÆ®" # ÃʱâÈ ¾È µÈ º¯¼ö, ´Ù½Ã. if [ "$false" ] then echo "\"\$false\" ´Â Âü." else echo "\"\$false\" ´Â °ÅÁþ." fi # Èì, ÀÌ°Ô ¿ì¸®°¡ ¿øÇÏ´ø °ÅÁÒ. echo exit 0 |
¿¬½À¹®Á¦. À§¿¡ ³ª¿Â ¿¹ 7-1ÀÇ µ¿ÀÛÀ» ¼³¸íÇØ º¸¼¼¿ä.
if [ condition-true ] then command 1 command 2 ... else # ¿É¼Ç(ÇÊ¿ä ¾ø´Ù¸é ºüÁ®µµ µË´Ï´Ù). # ¿ø·¡ Á¶°ÇÀÌ ½ÇÆÐÇßÀ» °æ¿ì µ¿ÀÛÇÒ ÄÚµåµéÀ» µÎ¼¼¿ä. command 3 command 4 ... fi |
'if'¿Í 'then'À» °°Àº ÁÙ¿¡ µÎ·Á¸é ¼¼¹ÌÄÝ·ÐÀ» ¾²¼¼¿ä.
if [ -x "$filename" ]; then |
elif´Â else ifÀÇ ´ÜÃàÇüÀÔ´Ï´Ù. ¹Ù±ùÂÊ if/thenÀÇ ¾ÈÂÊ¿¡ ÁßÃ¸ÇØ¼ ¾²´Â È¿°ú¸¦ °¡Á®¿É´Ï´Ù.
if [ condition1 ] then command1 command2 command3 elif [ condition2 ] # else if ¿Í °°½À´Ï´Ù. then command4 command5 else default-command fi |
if test condition-true¿Í if [ condition-true ] Àº ¿ÏÀüÈ÷ ¶È°°Àº Ç¥ÇöÀÔ´Ï´Ù. [ ´Â test ¸í·É¾î¸¦ ºÎ¸£´Â ÅäÅ«À̱⠶§¹®¿¡ ] °¡ ²À ÇÊ¿äÇÏÁø ¾ÊÁö¸¸ »õ ¹öÀüÀÇ bash ¿¡¼´Â ±×·¡µµ ÀÖ¾î¾ß µË´Ï´Ù.
Âü°í: test ¸í·É¾î´Â ÆÄÀÏ Å¸ÀÔÀ» Å×½ºÆ®Çϰųª ¹®ÀÚ¿À» ºñ±³ÇØ ÁÖ´Â bash ³»Àå ¸í·ÉÀ̱⠶§¹®¿¡, Bash ½ºÅ©¸³Æ®¾È¿¡¼ test´Â sh-utils ÆÐŰÁöÀÇ ÀϺκÐÀÎ /usr/bin/test ¿ÜºÎ ¸í·É¾î¸¦ ºÎ¸£Áö ¾Ê½À´Ï´Ù. ºñ½ÁÇϰÔ, [µµ /usr/bin/test·Î ¸µÅ©µÇ¾î ÀÖ´Â /usr/bin/[¸¦ ºÎ¸£Áö ¾Ê½À´Ï´Ù.
bash$ type test test is a shell builtin bash$ type '[' [ is a shell builtin bash$ type '[[' [[ is a shell keyword bash$ type ']]' ]] is a shell keyword bash$ type ']' bash: type: ]: not found
¿¹ 7-2. [ ] ¿Í test ÀÇ µ¿ÀÏÇÔ
#!/bin/bash echo if test -z "$1" then echo "¸í·É¾îÁÙ ÀÎÀÚ°¡ ¾ø½À´Ï´Ù." else echo "ù¹øÂ° ¸í·É¾îÁÙ ÀÎÀÚ´Â $1 ÀÔ´Ï´Ù." fi if [ -z "$1" ] # À§ÀÇ ÄÚµå ºí·°°ú ±â´ÉÀûÀ¸·Î µ¿ÀÏÇÕ´Ï´Ù. # if [ -z "$1" ¶ó°í ÇØµµ µ¿ÀÛÇϰÚÁö¸¸... #+ Bash ´Â ¿À¸¥ÂÊ ´ë°ýÈ£°¡ ºüÁ³´Ù°í ¿¡·¯ ¸Þ¼¼Áö¸¦ ³À´Ï´Ù. then echo "¸í·É¾îÁÙ ÀÎÀÚ°¡ ¾ø½À´Ï´Ù." else echo "ù¹øÂ° ¸í·É¾îÁÙ ÀÎÀÚ´Â $1 ÀÔ´Ï´Ù." fi echo exit 0 |
[[ ]] ´Â ½© »ó¿¡¼ [ ]°ú µ¿ÀÏÇÕ´Ï´Ù. ÀÌ ¸í·É¾î´Â ksh88¿¡¼ µû ¿Â È®Àå Å×½ºÆ® ¸í·É¾îÀÔ´Ï´Ù.
Âü°í: [[ °ú ]] »çÀÌ¿¡¼´Â ÆÄÀϸí È®ÀåÀ̳ª ³¹¸» Á¶°¢³²ÀÌ ÀϾÁö ¾ÊÁö¸¸ ¸Å°³º¯¼ö È®ÀåÀ̳ª ¸í·É¾î ġȯÀº ÀϾ´Ï´Ù.
file=/etc/passwd if [[ -e $file ]] then echo "ºñ¹Ð¹øÈ£ ÆÄÀÏÀÌ Á¸ÀçÇÕ´Ï´Ù." fi |
ÀÛÀº Á¤º¸: [ ... ] ¸»°í [[ ... ]] ¸¦ ¾²¸é ¸¹Àº ³í¸®Àû ¿¡·¯µéÀ» ¸·À» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î &&, ||, <, > ¿¬»êÀÚµéÀº [ ] ¿¡¼ ¿¡·¯¸¦ ³»Áö¸¸ [[ ]] ¿¡¼´Â Àß µ¿ÀÛÇÕ´Ï´Ù.
Âü°í: if´ÙÀ½¿¡ ²À test³ª Å×½ºÆ® ´ë°ýÈ£( [ ]³ª [[ ]] )°¡ ³ª¿ÀÁö ¾Ê¾Æµµ µË´Ï´Ù.
"if COMMAND" ¹®Àº COMMANDÀÇ Á¾·á »óŸ¦ ¸®ÅÏÇÕ´Ï´Ù.
dir=/home/bozo if cd "$dir" 2>/dev/null; then # "2>/dev/null" ´Â ¿¡·¯ ¸Þ¼¼Áö¸¦ ¼û°ÜÁÝ´Ï´Ù. echo "ÇöÀç µð·ºÅ丮´Â $dir ÀÔ´Ï´Ù." else echo "$dir ·Î ¿Å°Ü°¥ ¼ö ¾ø½À´Ï´Ù." fiºñ½ÁÇϰÔ, Å×½ºÆ® ´ë°ýÈ£°¡ ¸®½ºÆ®¿Í °°ÀÌ ¾²À̸é if ¾øÀÌ ´Üµ¶À¸·Î ¾²ÀÏ ¼öµµ ÀÖ½À´Ï´Ù.
var1=20 var2=22 [ "$var1" -ne "$var2" ] && echo "$var1 ´Â $var2 ¿Í °°Áö ¾Ê½À´Ï´Ù." home=/home/bozo [ -d "$home" ] || echo "$home µð·ºÅ丮´Â Á¸ÀçÇÏÁö ¾Ê´Â µð·ºÅ丮ÀÔ´Ï´Ù."
(( )) ¹®Àº »ê¼ú½ÄÀ» Æò°¡Çؼ È®ÀåÇØ ÁÝ´Ï´Ù. ±× »ê¼ú½ÄÀÌ 0 À¸·Î Æò°¡µÇ¸é Á¾·á »óÅ 1À̳ª "false"¸¦ ¸®ÅÏÇϰí 0 ÀÌ ¾Æ´Ñ °ªÀ¸·Î Æò°¡µÇ¸é Á¾·á »óÅ 0À̳ª "true"¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¾Õ¿¡¼ ¾ê±âÇß´ø test³ª [ ]¿Í Çö°ÝÇÑ Â÷À̸¦ º¸¿©ÁÝ´Ï´Ù.
¿¹ 7-3. (( ))·Î »ê¼ú½Ä Å×½ºÆ® Çϱâ
#!/bin/bash # »ê¼ú Å×½ºÆ®. # (( ... )) ´Â »ê¼ú¹®À» Æò°¡Çϰí Å×½ºÆ® ÇØ ÁÝ´Ï´Ù. # Á¾·á »óÅ´ [ ... ] ¿Í ¹Ý´ëÀÔ´Ï´Ù! (( 0 )) echo "\"(( 0 ))\" ÀÇ Á¾·á »óÅ´ $?." # 1 (( 1 )) echo "\"(( 1 ))\" ÀÇ Á¾·á »óÅ´ $?." # 0 (( 5 > 4 )) # Âü echo $? # 0 (( 5 > 9 )) # °ÅÁþ echo $? # 1 exit 0 |