if/then Àº Á¶°ÇÀÌ ÂüÀÎÁö ¾Æ´ÑÁö Å×½ºÆ®¸¦ ÇØ¼ ÂüÀÌ¸é ¸í·É¾î¸¦ ½ÇÇà½Ãŵ´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼ 0ÀÌ ÂüÀ¸·Î ÀνĵǴ°ÍÀ» ÁÖÀDZí°Ô »ìÆìº¸½Ê½Ã¿À. ¾î¶² ¹®ÀÚ¿À̳ª ¼ýÀÚµµ ¿ª½Ã ÂüÀ¸·Î Å×½ºÆ®µË´Ï´Ù. ÀÌ ¿¹Á¦ÀÇ ·ÎÁ÷¿¡ ´ëÇÑ ¼³¸íÀº µ¶ÀÚ ¿©·¯ºÐÀÇ ¿¬½À¹®Á¦·Î ³²°Ü ³õ½À´Ï´Ù.
예 3-9. ¹«¾ùÀÌ ÂüÀΰ¡?
#!/bin/bash if [ 0 ] # 0 then echo "0 Àº Âü." else echo "0 Àº °ÅÁþ." fi if [ ] #NULL (ºó Á¶°Ç) then echo "NULL Àº Âü." else echo "NULL Àº °ÅÁþ." fi if [ xyz ] #¹®ÀÚ¿ then echo "¹«ÀÛÀ§ ¹®ÀÚ¿Àº Âü." else echo "¹«ÀÛÀ§ ¹®ÀÚ¿Àº °ÅÁþ." fi if [ $xyz ] #¹®ÀÚ¿ then echo "¼±¾ð ¾È µÈ º¯¼ö´Â Âü." else echo "¼±¾ð ¾È µÈ º¯¼ö´Â °ÅÁþ." fi exit 0 |
¿¬½À¹®Á¦. À§ 예 3-9ÀÇ µ¿ÀÛÀ» ¼³¸íÇϼ¼¿ä.
if [ condition-true ] then command 1 command 2 ... else # ÇÊ¿ä¾ø´Ù¸é ¾È ½áµµ µË´Ï´Ù. # Á¶°Ç Å×½ºÆ®¿¡¼ °ÅÁþÀÏ °æ¿ì ½ÇÇàµÉ ÄÚµåµéÀ» ÀûÀ¸¼¼¿ä. command 3 command 4 ... fi |
'if'¿Í 'then'À» ÇÑ ÁÙ¿¡ ÀûÀ¸·Á¸é ¼¼¹ÌÄÝ·ÐÀ» ºÙÀ̼¼¿ä.
if [ -x filename ]; then |
else if¿¡ ´ëÇÑ Áö½Ã¾îÀÔ´Ï´Ù. if/thenÀ» ÇÑ ´Ü°è ´õ µé¾î°¡°Ô ÇÕ´Ï´Ù.
if [ condition ] then command command command elif # else if ¶û °°½À´Ï´Ù. then command command else default-command fi |
test condition-true ´Â if [ condition-true ]¿Í Á¤È®È÷ ÀÏÄ¡Çϴ ǥÇöÀÔ´Ï´Ù. ¿ÞÂÊ ²©¼èÀÎ [ Àº test¿¡ ´ëÇÑ º°¸íÀÔ´Ï´Ù. (µû¶ó¼ ¿À¸¥ÂÊ ²©¼è´Â ÇÊ¿äÇÏÁö ¾ÊÁö¸¸ ¸¸¾à ¾È ¾´´Ù¸é bash »õ ¹öÀü¿¡¼´Â ¹®¹ý¿¡·¯¸¦ ¹ß»ý½Ãŵ´Ï´Ù.)
예 3-10. [ ] °ú testÀÇ °°À½
#!/bin/bash echo if test -z $1 then echo "¸í·É¾î ÁÙ ÀÎÀÚ°¡ ¾ø½À´Ï´Ù." else echo "ù ¹øÂ° ¸í·É¾î ÁÙ ÀÎÀÚ´Â $1 ÀÔ´Ï´Ù." fi # À§ ¾Æ·¡, ¾ç ÂÊ ¸ðµÎ ±â´ÉÀûÀ¸·Î´Â µ¿ÀÏÇÕ´Ï´Ù. if [ -z $1 ] # if [ -z $1 # ÀÌ°Í ¿ª½Ã µ¿ÀÛÀº ÇÏÁö¸¸ ¿¡·¯ ¸Þ¼¼Áö¸¦ »Ñ¸³´Ï´Ù. then echo "¸í·É¾î ÁÙ ÀÎÀÚ°¡ ¾ø½À´Ï´Ù." else echo "ù ¹øÂ° ¸í·É¾î ÁÙ ÀÎÀÚ´Â $1 ÀÔ´Ï´Ù." fi echo exit 0 |
¸Â´Ù¸é ÂüÀ» ¸®ÅÏ
ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù¸é
ÆÄÀÏÀÌ º¸Åë ÆÄÀÏÀ̶ó¸é
ÆÄÀÏ »çÀÌÁî°¡ 0ÀÌ ¾Æ´Ï¶ó¸é
ÆÄÀÏÀÌ µð·ºÅ丮¶ó¸é
ÆÄÀÏÀÌ ºí·° µð¹ÙÀ̽º¶ó¸é(Ç÷ÎÇdzª CD-ROM µîµî)
ÆÄÀÏÀÌ Ä³¸¯ÅÍ µð¹ÙÀ̽º¶ó¸é(Űº¸µå, ¸ðµ©, »ç¿îµåÄ«µå µîµî)
ÆÄÀÏÀÌ ÆÄÀÌÇÁ¶ó¸é
ÆÄÀÏÀÌ ½Éº¼¸¯ ¸µÅ©¶ó¸é
ÆÄÀÏÀÌ ¼ÒÄÏÀ̶ó¸é
ÆÄÀÏÀÌ Àб⠰¡´ÉÇÏ´Ù¸é
ÆÄÀÏÀÌ ¾²±â °¡´ÉÇÏ´Ù¸é
ÆÄÀÏÀÌ ½ÇÇà °¡´ÉÇÏ´Ù¸é
ÆÄÀÏ¿¡ ±×·ì ¾ÆÀ̵ð Ç÷¡±×°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é
ÆÄÀÏ¿¡ À¯Àú ¾ÆÀ̵ð Ç÷¡±×°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é
"½ºÆ¼Å° ºñÆ®"°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é(À¯Àú°¡ ½ºÆ¼Å° ºñÆ®°¡ ¼¼Æ®µÇ¾î ÀÖ´Â µð·ºÅ丮ÀÇ ¼ÒÀ¯ÀÚ°¡ ¾Æ´Ï¶ó¸é ±× µð·ºÅ丮 ¼Ó ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¶ó ÇÒ Áö¶óµµ »èÁ¦ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.)
ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¶ó¸é
ÆÄÀÏÀÇ ±×·ì ¾ÆÀ̵𰡠ÀÚ½ÅÀÇ ±×·ì ¾ÆÀ̵ð¿Í ÀÏÄ¡ÇÑ´Ù¸é
ÆÄÀÏ µð½ºÅ©¸³ÅÍ n ÀÌ ¿·Á ÀÖ´Ù¸é
º¸Åë Ç¥ÁØÀÔ·Â(stdin), Ç¥ÁØÃâ·Â(stdout), Ç¥ÁØ¿¡·¯(stderr)¸¦ ÂüÁ¶ÇÕ´Ï´Ù.(ÆÄÀÏ µð½ºÅ©¸³ÅÍ 0-2)
f1 ÆÄÀÏÀÌ f2 ÆÄÀϺ¸´Ù ÃÖ½ÅÀ̶ó¸é
f1 ÆÄÀÏÀÌ f2 ÆÄÀϺ¸´Ù ¿¹Àü°ÍÀ̶ó¸é
f1 ÆÄÀϰú f2 ÆÄÀÏÀÌ °°Àº ÆÄÀÏÀ» ¸µÅ©Çϰí ÀÖ´Ù¸é
"not" -- À§¿¡¼ ¾ê±âÇÑ °ÍµéÀÇ ¹Ý´ë »óȲÀ̶ó¸é(Áï, Á¶°ÇÀÌ Æ²¸± °æ¿ì ÂüÀ» ¸®ÅÏ)
예 3-11. Å×½ºÆ®, ¸í·É¾î ¿¬°á, ÀçÁöÇâ
#!/bin/bash # ÀÌ ÁÙÀº ÁÖ¼®ÀÔ´Ï´Ù. filename=sys.log if [ ! -f $filename ] then touch $filename; echo "ÆÄÀÏÀ» ¸¸µì´Ï´Ù." else cat /dev/null > $filename; echo "ÆÄÀÏ ³»¿ëÀ» Áö¿ó´Ï´Ù." fi # ÀÌ ÀÛ¾÷À» À§Çؼ´Â ´ç¿¬È÷ /var/log/messages ¿¡ # ¾Æ¹«³ª ÀÐÀ» ¼ö ÀÖ´Â ÆÛ¹Ì¼Ç(644)ÀÌ °É·Á ÀÖ¾î¾ß ÇÕ´Ï´Ù. tail /var/log/messages > $filename echo "$filename ¿¡ ½Ã½ºÅÛ ·Î±×¿¡ tailÀ» °Ç ºÎºÐÀÌ µé¾î ÀÖ½À´Ï´Ù." exit 0 |
Á¤¼ö ºñ±³
°°´Ù¸é Âü($a -eq $b)
´Ù¸£´Ù¸é Âü($a -ne $b)
´õ Å©´Ù¸é Âü($a -gt $b)
´õ Å©°Å³ª °°´Ù¸é Âü($a -ge $b)
´õ ÀÛ´Ù¸é Âü($a -lt $b)
´õ À۰ųª °°´Ù¸é Âü($a -le $b)
¹®ÀÚ¿ ºñ±³
°°´Ù¸é Âü($a = $b)
´Ù¸£´Ù¸é Âü($a != $b)
¾Æ½ºÅ° ÄÚµå ¼ø¼¿¡¼ ´õ ÀÛ´Ù¸é Âü($a \< $b)
ÁÖÀÇ : "<" ´Â À̽ºÄÉÀÌÇÁ ½ÃÄÑ¾ß µË´Ï´Ù.
¾Æ½ºÅ° ÄÚµå ¼ø¼¿¡¼ ´õ Å©´Ù¸é Âü ($a \> $b)
ÁÖÀÇ : ">" Àº À̽ºÄÉÀÌÇÁ ½ÃÄÑ¾ß µË´Ï´Ù.
ºñ±³ ¿¬»êÀÚ¸¦ ¾²´Â ¾îÇø®ÄÉÀÌ¼Ç ¿¹Á¦ Âü°í 예 3-90
¹®ÀÚ¿ÀÌ "³Î"À̸é Âü. Áï, ±æÀ̰¡ 0
¹®ÀÚ¿ÀÌ "³Î"ÀÌ ¾Æ´Ï¸é Âü.
경고 |
¿©±â¼´Â ¹®ÀÚ¿À» Å×½ºÆ® ²©¼è ¾È¿¡¼ µû¿ÈÇ¥·Î ¹¾î Áà¾ß µË´Ï´Ù. ´ë½Å ! -z ¶ó°í ½áµµ µË´Ï´Ù. ¾Æ´Ï¸é Å×½ºÆ® ¿¬»êÀÚ ¾øÀÌ ±×³É ¹®ÀÚ¿ ÀÚü·Î ÆÇ´ÜÇÒ ¼öµµ ÀÖ½À´Ï´Ù (예 3-13 Âü°í). |
예 3-12. »ê¼ú ºñ±³, ¹®ÀÚ¿ ºñ±³
#!/bin/bash a=4 b=5 # ¿©±â¼ a ¿Í b ´Â Á¤¼öÇüÀ̳ª ¹®ÀÚ¿ ¾ç ÂÊ ¸ðµÎ·Î ÇØ¼® µÉ ¼ö ÀÖ½À´Ï´Ù. # »ê¼ú ºñ±³¿Í ¹®ÀÚ¿ ºñ±³ »çÀÌ¿¡´Â ¾à°£ ¾Ö¸ÅÇÑ ºÎºÐÀÌ ÀÖ½À´Ï´Ù. # Á¶½ÉÇØ¼ ¾²±â ¹Ù¶ø´Ï´Ù. if [ $a -ne $b ] then echo "$a ´Â $b ¿Í °°Áö ¾Ê½À´Ï´Ù." echo "(»ê¼ú ºñ±³)" fi echo if [ $a != $b ] then echo "$a ´Â $b ¿Í °°Áö ¾Ê½À´Ï´Ù." echo "(¹®ÀÚ¿ ºñ±³)" fi echo exit 0 |
예 3-13. ¹®ÀÚ¿ÀÌ ³ÎÀÎÁö Å×½ºÆ®Çϱâ
#!/bin/bash # ¸¸¾à¿¡ ¹®ÀÚ¿ÀÌ ÃʱâȰ¡ ¾È µÆ´Ù¸é, ¾Æ¹«·± Á¤ÇØÁø °ªµµ °®Áö ¾Ê½À´Ï´Ù. # ÀÌ·± »óŸ¦ "null"À̶ó°í ºÎ¸¨´Ï´Ù(zero(0)¿Í´Â ´Ù¸¨´Ï´Ù). if [ -n $string1 ] # $string1 Àº ¼±¾ðµµ Ãʱâȵµ ¾È µÆ½À´Ï´Ù. then echo "\"string1\" Àº null ÀÌ ¾Æ´Õ´Ï´Ù." else echo "\"string1\" Àº null ÀÔ´Ï´Ù." fi # Ʋ·ÈÁÒ. # ÃʱâȰ¡ ¾È µÆ±â ¶§¹®¿¡ ³ÎÀÌ ¾Æ´Ñ °ÍÀ¸·Î ³ª¿Í¾ß ÇÕ´Ï´Ù. echo # ´Ù½Ã ÇØ º¼±î¿ä. if [ -n "$string1" ] # À̹ø¿£, $string1 À» Àοë(quote) ½ÃÄѺ¾½Ã´Ù. then echo "\"string1\" Àº null ÀÌ ¾Æ´Õ´Ï´Ù." else echo "\"string1\" Àº null ÀÔ´Ï´Ù." fi echo if [ $string1 ] # À̹ø¿£ $string1 ¸¸À» ½á¼ ÇØ º¸ÁÒ. then echo "\"string1\" Àº null ÀÌ ¾Æ´Õ´Ï´Ù." else echo "\"string1\" Àº null ÀÔ´Ï´Ù." fi # ¾ÆÁÖ Àß µÇ´Â±º¿ä. # [ ] Å×½ºÆ® ¿¬»êÀÚ¸¸ ¾²¸é ¹®ÀÚ¿ÀÌ null ÀÎÁö ¿©ºÎ¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù. echo string1=initialized if [ $string1 ] # ÀÌ ¹ø¿£ $string1 ¸¸À» ¾¹´Ï´Ù. then echo "\"string1\" Àº null ÀÌ ¾Æ´Õ´Ï´Ù." else echo "\"string1\" Àº null ÀÔ´Ï´Ù." fi # ´Ù½Ã Àß µË´Ï´Ù. exit 0 # ÀÌ ºÎºÐÀ» ÁöÀûÇØÁØ Florian Wisser¿¡°Ô °¨»çÇÕ´Ï´Ù. |
예 3-14. zmost
#!/bin/bash # 'most'À» ½á¼ gzipÀ¸·Î ¹ÀÎ ÆÄÀÏÀ» º¸±â NOARGS=1 if [ $# = 0 ] # ´ÙÀ½°ú °°Àº È¿°ú: if [ -z $1 ] then echo "»ç¿ë¹ý: `basename $0` filename" >&2 # Ç¥ÁØ¿¡·¯·Î ¿¡·¯ ¸Þ¼¼Áö. exit $NOARGS # ½ºÅ©¸³Æ®ÀÇ Á¾·á »óÅ·Π1À» ¸®ÅÏ # (¿¡·¯ ÄÚµå) fi filename=$1 if [ ! -f $filename ] then echo "$filename ÆÄÀÏÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù!" >&2 # Ç¥ÁØ¿¡·¯·Î ¿¡·¯ ¸Þ¼¼Áö. exit 2 fi if [ ${filename##*.} != "gz" ] # º¯¼ö ¹Ù²Ù±â¿¡ Áß°ýÈ£ ¾²±â. then echo "$1 ÆÄÀÏÀº gzip ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù!" exit 3 fi zcat $1 | most exit 0 # 'most' ÆÄÀÏ ºä¾î ¾²±â # ('less'¿Í ºñ½ÁÇÔ) |
º¹ÇÕ½Ä ºñ±³
³í¸®Àû and
exp1 -a exp2 °¡ ÂüÀ» ¸®ÅÏÇÒ Á¶°ÇÀº exp1, exp2 µÑ ´Ù ÂüÀÏ ¶§ÀÔ´Ï´Ù.
³í¸®Àû or
exp1 -o exp2 °¡ ÂüÀ» ¸®ÅÏÇÒ Á¶°ÇÀº exp1³ª exp2 ÁßÀÇ Çϳª¶óµµ ÂüÀÏ ¶§ÀÔ´Ï´Ù.
À̰͵éÀº Å×½ºÆ®ÇÒ Ç¥Çö½Ä¿¡ ²©¼è¸¦ ½á¾ß ÇÏ´Â && ¿Í ||º¸´Ù °£´ÜÇÏ°Ô ¾µ ¼ö ÀÖ½À´Ï´Ù.
½ÇÁ¦ »óȲ¿¡¼ º¹ÇÕ¹® ºñ±³ ¿¬»êÀÚ°¡ ¾²ÀÌ´Â °ÍÀ» Âü°í, 예 3-15