3.21. ¸®½ºÆ® »ý¼ºÀÚ(List Constructs)

"and list"°ú "or list"Àº ¿©·¯°³ÀÇ ¸í·É¾îµéÀ» ¿¬¼ÓÀûÀ¸·Î ½ÇÇà½Ãų ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. À̰ɷΠ¾ÆÁÖ º¹ÀâÇÑ ´ÙÁß if/thenÀ̳ª case¹®À» È¿°úÀûÀ¸·Î ´ëÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁÖÀÇÇÒ Á¡Àº "and list"À̳ª "or list"ÀÇ Á¾·á »óÅ´ ¸¶Áö¸·¿¡ ½ÇÇàµÈ ¸í·É¾îÀÇ Á¾·á »óŸ¦ °®´Â´Ù´Â °ÍÀÔ´Ï´Ù.

and list

command-1 && command-2 && command-3 && ... command-n
°¢ ¸í·É¾îµéÀº ¹Ù·Î ¾ÕÀÇ ¸í·É¾î°¡ true¸¦ ¸®ÅÏÇÏ´Â µ¿¾È, °è¼Ó ½ÇÇàµË´Ï´Ù. óÀ½ false°¡ ¸®ÅϵÆÀ» ¶§, Àüü ¸í·É¾î »ç½½ÀÌ ²÷¾îÁö¸é¼­ Á¾·áµË´Ï´Ù(óÀ½ false¸¦ ¸®ÅÏÇÑ ¸í·É¾î°¡ ¸¶Áö¸·À¸·Î ½ÇÇàµÇ´Â ¸í·É¾î°¡ µË´Ï´Ù).

예 3-86. "and list"À» ½á¼­ ¸í·É¾îÁÙ ÀÎÀÚ È®ÀÎÇϱâ

#!/bin/bash

# "and list"

if [ ! -z $1 ] && echo "ù¹øÂ° ÀÎÀÚ = $1" && [ ! -z $2 ] && echo "µÎ¹øÂ° ÀÎÀÚ = $2"
then
  echo "µÎ °³ ÀÌ»óÀÇ ÀÎÀÚ°¡ ³Ñ¾î¿Ô½À´Ï´Ù."
  # ¸ðµç ¸í·É¾î »ç½½ÀÌ ÂüÀ» ¸®ÅÏÇßÀ» °æ¿ì
else
  echo "µÎ °³ ¹Ì¸¸ÀÇ ÀÎÀÚ°¡ ³Ñ¾î¿Ô½À´Ï´Ù."
  # ¸í·É¾î »ç½½Áß ÃÖ¼Ò Çϳª°¡ °ÅÁþÀ» ¸®ÅÏ
fi  
# ÁÖÀÇÇÏ½Ç°Ô Çϳª Àֳ׿ä. "if [ ! -z $1 ]" ´Â Àß µÇÁö¸¸ ¶È°°À» °Í °°Àº
# "if [ -n $1 ]" ´Â ¾È µË´Ï´Ù. ÀÌ°Ç ¹ö±×Áö Ư¡ÀÌ ¾Æ´Õ´Ï´Ù.


# "¼ø¼öÇÑ" if/then ¹®À» ½á¼­ ¶È°°Àº ÀÏÀ» ÇÕ´Ï´Ù.
if [ ! -z $1 ]
then
  echo "ù¹øÂ° ÀÎÀÚ = $1"
fi
if [ ! -z $2 ]
then
  echo "µÎ¹øÂ° ÀÎÀÚ = $2"
  echo "µÎ °³ ÀÌ»óÀÇ ÀÎÀÚ°¡ ³Ñ¾î¿Ô½À´Ï´Ù."
else
  echo "µÎ °³ ¹Ì¸¸ÀÇ ÀÎÀÚ°¡ ³Ñ¾î¿Ô½À´Ï´Ù."
fi
# ÀÌ·¸°Ô ±¸ÇöÇÏ´Â °ÍÀº "and list" ¹öÀüº¸´Ù ´õ ±æ°í ´ú ¼¼·ÃµÅ º¸ÀÔ´Ï´Ù.


exit 0
or list

command-1 || command-2 || command-3 || ... command-n
°¢ ¸í·É¾îµéÀº ¹Ù·Î ¾ÕÀÇ ¸í·É¾î°¡ false¸¦ ¸®ÅÏÇÏ´Â µ¿¾È, °è¼Ó ½ÇÇàµË´Ï´Ù. óÀ½À¸·Î true°¡ ¸®ÅϵǸé Àüü ¸í·É¾î »ç½½ÀÌ ²÷¾îÁö¸é¼­ Á¾·áµË´Ï´Ù(óÀ½À¸·Î true¸¦ ¸®ÅÏÇÑ ¸í·É¾î°¡ ¸¶Áö¸·À¸·Î ½ÇÇàµÇ´Â ¸í·É¾î°¡ µË´Ï´Ù). ÀÌ´Â ºÐ¸íÈ÷ "and list"¿Í Á¤¹Ý´ëÀÔ´Ï´Ù.

예 3-87. "and list"°ú "or list"¸¦ °°ÀÌ ¾²±â

#!/bin/bash

# "Delete", º°·Î Á¤±³ÇÏÁö ¾ÊÀº ÆÄÀÏ Áö¿ì±â À¯Æ¿¸®Æ¼
# »ç¿ë¹ý: delete filename

if [ -z $1 ]
then
  file=nothing
else
  file=$1
fi  
# Áö¿ï ¶§ ¸Þ¼¼Áö¸¦ À§Çؼ­ ÆÄÀÏ À̸§(À̳ª "nothing")À» ¾Ë¾Æ³¿ 


[ ! -f $1 ] && echo "$1 ¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù. Á¸ÀçÇÏÁö ¾Ê´Â ÆÄÀÏÀº Áö¿ï ¼ö ¾ø½À´Ï´Ù."
# AND LIST, ÆÄÀÏÀÌ ¾øÀ» ¶§ ¿¡·¯ ¸Þ¼¼Áö¸¦ ³¿

[ ! -f $1 ] || ( rm -f $1; echo "$file À» Áö¿ü½À´Ï´Ù." )
# OR LIST, ÆÄÀÏÀÌ ÀÖ´Ù¸é Áö¿ò
# ( command1 ; command2 ) ´Â »ç½Ç, AND LISTÀÇ ´Ù¸¥ ¹öÀüÀÔ´Ï´Ù.

# ·ÎÁ÷ÀÌ µÚ¹Ù²ï °Í¿¡ ÁÖÀÇÇϼ¼¿ä.
# AND LIST ´Â ÂüÀÏ ¶§ ½ÇÇàµÇ°í, OR LIST ´Â °ÅÁþÀÏ ¶§ ½ÇÇàµË´Ï´Ù.

[ ! -z $1 ] ||  echo "»ç¿ë¹ý: `basename $0` filename"
# ¸í·É¾î ÁÙ ÀÎÀÚ(ÆÄÀÏ À̸§)ÀÌ ¾øÀ» °æ¿ì ¿¡·¯ ¸Þ¼¼Áö¸¦ ³»±â À§ÇÑ OR LIST

exit 0

"and"¿Í "or"¸¦ ¾ÆÁÖ ¸ÚÁö°Ô ¿¬°áÇØ¼­ ¾µ ¼öµµ ÀÖÁö¸¸ ±×·¸°Ô µÇ¸é Àüü ·ÎÁ÷ÀÌ µÚÁ×¹ÚÁ׵DZ⠽±°í µð¹ö±ëÇÒ ¶§ ¾ÆÁÖ Èûµé¾î Áú °ÍÀÔ´Ï´Ù.