3.5. Å×½ºÆ®

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

elif

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

3.5.1. ÆÄÀÏ Å×½ºÆ® ¿¬»êÀÚ

¸Â´Ù¸é ÂüÀ» ¸®ÅÏ

-e

ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù¸é

-f

ÆÄÀÏÀÌ º¸Åë ÆÄÀÏÀ̶ó¸é

-s

ÆÄÀÏ »çÀÌÁî°¡ 0ÀÌ ¾Æ´Ï¶ó¸é

-d

ÆÄÀÏÀÌ µð·ºÅ丮¶ó¸é

-b

ÆÄÀÏÀÌ ºí·° µð¹ÙÀ̽º¶ó¸é(Ç÷ÎÇdzª CD-ROM µîµî)

-c

ÆÄÀÏÀÌ Ä³¸¯ÅÍ µð¹ÙÀ̽º¶ó¸é(Űº¸µå, ¸ðµ©, »ç¿îµåÄ«µå µîµî)

-p

ÆÄÀÏÀÌ ÆÄÀÌÇÁ¶ó¸é

-L

ÆÄÀÏÀÌ ½Éº¼¸¯ ¸µÅ©¶ó¸é

-S

ÆÄÀÏÀÌ ¼ÒÄÏÀ̶ó¸é

-r

ÆÄÀÏÀÌ Àб⠰¡´ÉÇÏ´Ù¸é

-w

ÆÄÀÏÀÌ ¾²±â °¡´ÉÇÏ´Ù¸é

-x

ÆÄÀÏÀÌ ½ÇÇà °¡´ÉÇÏ´Ù¸é

-g

ÆÄÀÏ¿¡ ±×·ì ¾ÆÀ̵ð Ç÷¡±×°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é

-u

ÆÄÀÏ¿¡ À¯Àú ¾ÆÀ̵ð Ç÷¡±×°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é

-k

"½ºÆ¼Å° ºñÆ®"°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é(À¯Àú°¡ ½ºÆ¼Å° ºñÆ®°¡ ¼¼Æ®µÇ¾î ÀÖ´Â µð·ºÅ丮ÀÇ ¼ÒÀ¯ÀÚ°¡ ¾Æ´Ï¶ó¸é ±× µð·ºÅ丮 ¼Ó ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¶ó ÇÒ Áö¶óµµ »èÁ¦ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.)

-O

ÆÄÀÏÀÇ ¼ÒÀ¯ÀÚ¶ó¸é

-G

ÆÄÀÏÀÇ ±×·ì ¾ÆÀ̵𰡠ÀÚ½ÅÀÇ ±×·ì ¾ÆÀ̵ð¿Í ÀÏÄ¡ÇÑ´Ù¸é

-t n

ÆÄÀÏ µð½ºÅ©¸³ÅÍ n ÀÌ ¿­·Á ÀÖ´Ù¸é

º¸Åë Ç¥ÁØÀÔ·Â(stdin), Ç¥ÁØÃâ·Â(stdout), Ç¥ÁØ¿¡·¯(stderr)¸¦ ÂüÁ¶ÇÕ´Ï´Ù.(ÆÄÀÏ µð½ºÅ©¸³ÅÍ 0-2)

f1 -nt f2

f1 ÆÄÀÏÀÌ f2 ÆÄÀϺ¸´Ù ÃÖ½ÅÀ̶ó¸é

f1 -ot f2

f1 ÆÄÀÏÀÌ f2 ÆÄÀϺ¸´Ù ¿¹Àü°ÍÀ̶ó¸é

f1 -ef 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

3.5.2. ºñ±³ ¿¬»êÀÚ(ÀÌÁø)

Á¤¼ö ºñ±³

-eq

°°´Ù¸é Âü($a -eq $b)

-ne

´Ù¸£´Ù¸é Âü($a -ne $b)

-gt

´õ Å©´Ù¸é Âü($a -gt $b)

-ge

´õ Å©°Å³ª °°´Ù¸é Âü($a -ge $b)

-lt

´õ ÀÛ´Ù¸é Âü($a -lt $b)

-le

´õ À۰ųª °°´Ù¸é Âü($a -le $b)

¹®ÀÚ¿­ ºñ±³

=

°°´Ù¸é Âü($a = $b)

!=

´Ù¸£´Ù¸é Âü($a != $b)

\<

¾Æ½ºÅ° ÄÚµå ¼ø¼­¿¡¼­ ´õ ÀÛ´Ù¸é Âü($a \< $b)

ÁÖÀÇ : "<" ´Â À̽ºÄÉÀÌÇÁ ½ÃÄÑ¾ß µË´Ï´Ù.

\>

¾Æ½ºÅ° ÄÚµå ¼ø¼­¿¡¼­ ´õ Å©´Ù¸é Âü ($a \> $b)

ÁÖÀÇ : ">" Àº À̽ºÄÉÀÌÇÁ ½ÃÄÑ¾ß µË´Ï´Ù.

ºñ±³ ¿¬»êÀÚ¸¦ ¾²´Â ¾îÇø®ÄÉÀÌ¼Ç ¿¹Á¦ Âü°í 예 3-90

-z

¹®ÀÚ¿­ÀÌ "³Î"À̸é Âü. Áï, ±æÀ̰¡ 0

-n

¹®ÀÚ¿­ÀÌ "³Î"ÀÌ ¾Æ´Ï¸é Âü.

경고

¿©±â¼­´Â ¹®ÀÚ¿­À» Å×½ºÆ® ²©¼è ¾È¿¡¼­ µû¿ÈÇ¥·Î ¹­¾î Áà¾ß µË´Ï´Ù. ´ë½Å ! -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'¿Í ºñ½ÁÇÔ)

º¹ÇÕ½Ä ºñ±³

-a

³í¸®Àû and

exp1 -a exp2 °¡ ÂüÀ» ¸®ÅÏÇÒ Á¶°ÇÀº exp1, exp2 µÑ ´Ù ÂüÀÏ ¶§ÀÔ´Ï´Ù.

-o

³í¸®Àû or

exp1 -o exp2 °¡ ÂüÀ» ¸®ÅÏÇÒ Á¶°ÇÀº exp1³ª exp2 ÁßÀÇ Çϳª¶óµµ ÂüÀÏ ¶§ÀÔ´Ï´Ù.

À̰͵éÀº Å×½ºÆ®ÇÒ Ç¥Çö½Ä¿¡ ²©¼è¸¦ ½á¾ß ÇÏ´Â && ¿Í ||º¸´Ù °£´ÜÇÏ°Ô ¾µ ¼ö ÀÖ½À´Ï´Ù.

½ÇÁ¦ »óȲ¿¡¼­ º¹ÇÕ¹® ºñ±³ ¿¬»êÀÚ°¡ ¾²ÀÌ´Â °ÍÀ» Âü°í, 예 3-15