³»Àå ¸í·É¾î´Â bash ¾È¿¡ Æ÷ÇԵǾî ÀÖ´Â ¸í·É¾îÀÔ´Ï´Ù.
À̰ÍÀº ¾ÆÁÖ °·ÂÇÑ µµ±¸·Î¼ ¸í·É¾î ÁÙ¿¡¼ ½ºÅ©¸³Æ®·Î ³Ñ¾î¿Â ÀÎÀÚ¸¦ ÆÄ½ÌÇØÁÝ´Ï´Ù. C¿¡¼ÀÇ getopt ¶óÀ̺귯¸® ÇÔ¼ö¿Í ºñ½ÁÇÕ´Ï´Ù. ¿©·¯°³ÀÇ Ç÷¡±×[1]¿Í ¿É¼ÇÀ» ½ºÅ©¸³Æ®¿¡°Ô ³Ñ°ÜÁְųª À̾îÁÖ°Ô ÇÕ´Ï´Ù(¿¹¸¦ µé¸é scriptname -abc -e /usr/local/).
getopts´Â ³»ºÎÀûÀ¸·Î µÎ °³ÀÇ º¯¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. $OPTIND(OPTion INDex)´Â ÀÎÀÚ Æ÷ÀÎÅÍÀ̰í $OPTARG(OPTion ARGument)´Â Ç÷¡±×¿¡ ºÙ´Â Ãß°¡ ÀÎÀÚ(¿É¼Ç)¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ·± °æ¿ì¶ó¸é Á¤ÀÇ Å±׿¡¼ ÄÝ·ÐÀ» Ç÷¡±× µÚ¿¡ ºÙ¿©¼ Ç¥½ÃÇÕ´Ï´Ù.
getopts´Â º¸Åë while°ú °°ÀÌ ½á¼ °¢ Ç÷¡±×¿Í ¿É¼ÇÀ» ÇÑ ¹ø¿¡ ó¸®Çϰí $OPTINDÀ» Çϳª¾¿ ÁÙ¿©¼ ±× ´ÙÀ½ °ÍÀ» ó¸®ÇÏ°Ô ÇÕ´Ï´Ù.
참고:
¸í·É¾î ÁÙ¿¡¼ ÀÎÀÚ¸¦ Àû¾î ÁÙ¶§´Â -³ª +µÚ¿¡ Àû¾îÁà¾ß Çϴµ¥ ¾È ±×·¯¸é getopts°¡ ´õ ÀÌ»ó ÁøÇàÇÏÁö ¾Ê°í Áß´ÜÇÒ °ÍÀÔ´Ï´Ù.
getopts Çü½ÄÀº Ç¥ÁØ while °ú ¾à°£Àº ´Ù¸¥ ÇüÅ·ΠÁ¶°Ç ²©¼è°¡ ºüÁ® ÀÖ½À´Ï´Ù.
¿¹ÀüÀÇ getopt´Â ¾ø¾îÁö°í getopts °¡ »õ·Ó°Ô ¾²ÀÔ´Ï´Ù.
while getopts ":abcde:fg" Option # Ãʱ⠼±¾ð # a, b, c, d, e, f, g °¡ ¹Ù¶ó´Â Ç÷¡±×µéÀÓ # 'e' µÚÀÇ :´Â 'e' Ç÷¡±×´Â Ãß°¡ Á¤º¸°¡ ÇÊ¿äÇÏ´Ù´Â ¶æÀÓ do case $Option in a ) # 'a'ÀÏ °æ¿ì ÇÒ ÀÏ b ) # 'b'ÀÏ °æ¿ì ÇÒ ÀÏ ... e) # 'e'ÀÏ °æ¿ì ÇÒ ÀÏ, $OPTARG·Î 'e'¿¡ µ¡ºÙÀÎ Á¤º¸¸¦ ó¸® ... g ) # 'g'ÀÏ °æ¿ì ÇÒ ÀÏ esac done # ÀÎÀÚ Æ÷ÀÎÅ͸¦ ´ÙÀ½À¸·Î À̵¿ shift $(($OPTIND - 1)) # º¸ÀÌ´Â °Íó·³ ±×·¸°Ô º¹ÀâÇÏÁö´Â ¾Ê½À´Ï´Ù. ^^ |
예 3-39. getopts·Î Ç÷¡±×/¿É¼Ç ÀоîµéÀ̱â
#!/bin/bash # 'getopts' ´Â ½ºÅ©¸³Æ®·Î ³Ñ¾î¿Â ¸í·É¾î ÁÙ ÀÎÀÚ¸¦ ó¸®ÇØÁÝ´Ï´Ù. # »ç¿ë¹ý: scriptname -options # ÁÖÀÇ: ´ë½¬(-)°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. # ÀÌ ½ºÅ©¸³Æ®¸¦ ´ÙÀ½Ã³·³ ºÒ·¯º¸¼¼¿ä. # 'scriptname -mn' # 'scriptname -oq qOption' # (qOption Àº ¾Æ¹« ¹®ÀÚ¿ÀÌ¸é µË´Ï´Ù.) OPTERROR=33 if [ -z $1 ] # ¾Æ¹« ÀÎÀÚµµ ¾ø´Ù¸é Åõ´ú°Å¸®¸é¼ Á¾·áÇÕ´Ï´Ù. then echo "»ç¿ë¹ý: `basename $0` options (-mnopqrs)" exit $OPTERROR fi while getopts ":mnopq:rs" Option do case $Option in m ) echo "1¹ø ½Ã³ª¸®¿À: option -m-";; n | o ) echo "2¹ø ½Ã³ª¸®¿À: option -$Option-";; p ) echo "3¹ø ½Ã³ª¸®¿À: option -p-";; q ) echo "4¹ø ½Ã³ª¸®¿À: option -q-, \"$OPTARG\""¸¦ Áà¼;; # 'q' ¿É¼ÇÀº Ãß°¡ ÀÎÀÚ°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¾ø´Ù¸é ¾Æ¹« Àϵµ ÀϾÁö ¾Ê½À´Ï´Ù. r | s ) echo "5¹ø ½Ã³ª¸®¿À: option -$Option-"'';; * ) echo "¾Ë¼ö ¾ø´Â ¿É¼Ç.";; esac done shift $(($OPTIND - 1)) # ÀÎÀÚ Æ÷ÀÎÅ͸¦ °¨¼Ò½ÃÄѼ ´ÙÀ½ ÀÎÀÚ¸¦ °¡¸£Å°°Ô ÇÕ´Ï´Ù. exit 0 |
½ºÅ©¸³Æ®¸¦ ¹«Á¶°Ç ³¡³¿. exit´Â Á¤¼ö¸¦ ÀÎÀÚ·Î °¡Á®¼ ½ºÅ©¸³Æ®¿¡°Ô Á¾·á »óŸ¦ ³Ñ°Ü ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. °£´ÜÇÑ ½ºÅ©¸³Æ®¸¦ exit 0ó·³ ³¡³»¼ ¼º°øÀûÀÎ ½ÇÇàÀ» ¾Ë·ÁÁִ°ÍÀº ¾ÆÁÖ ÁÁÀº ½À°üÀÔ´Ï´Ù.
set ¸í·É¾î´Â ³»ºÎ ½ºÅ©¸³Æ® º¯¼öÀÇ °ªÀ» ¹Ù²ãÁÝ´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ ÇൿÀ» °áÁ¤ÇÏ´Â ¿É¼Ç Ç÷¡±×¸¦ Ű°Å³ª ²ô´Â ¿ªÇÒÀ» Çϴµ¥ »ç¿ëÇϱ⵵ Çϰí(3.27절 Âü°í), À§Ä¡ ÀÎÀÚ¸¦ ƯÁ¤ ¸í·É¾îÀÇ °á°ú·Î ¹Ù²Ù±â À§Çؼµµ ¾²ÀÔ´Ï´Ù(set `command`). µû¶ó¼ ±× ¸í·É¾îÀÇ Ãâ·ÂÀ» ÆÄ½ÌÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
예 3-40. À§Ä¡ ÀÎÀÚ¿Í set
#!/bin/bash # script "set-test" # 3°³ÀÇ ÀÎÀÚ¸¦ Á༠½ÇÇà½ÃŰ¼¼¿ä. # ¿¹¸¦ µé¸é "./set-test one two three". echo echo "set \'uname -a\' Çϱâ ÀüÀÇ À§Ä¡ ÀÎÀÚ :" echo "ù¹øÂ° ¸í·É¾î ÁÙ ÀÎÀÚ = $1" echo "µÎ¹øÂ° ¸í·É¾î ÁÙ ÀÎÀÚ = $2" echo "¼¼¹øÂ° ¸í·É¾î ÁÙ ÀÎÀÚ = $3" echo set `uname -a` # À§Ä¡ ÀÎÀÚ¸¦ 'uname -a' ¸í·É¾îÀÇ °á°ú·Î ¼¼Æ® echo "set \'uname -a\' ÇÑ ´ÙÀ½ÀÇ À§Ä¡ ÀÎÀÚ :" # $1, $2, $3, µîµîÀÌ 'uname -a' ÀÇ °á°ú·Î ´Ù½Ã ÃʱâÈ µË´Ï´Ù. echo "'uname -a' ÀÇ Ã¹¹øÂ° Çʵå = $1" echo "'uname -a' ÀÇ µÎ¹øÂ° Çʵå = $2" echo "'uname -a' ÀÇ ¼¼¹øÂ° Çʵå = $3" echo exit 0 |
unset´Â ³»ºÎ ½ºÅ©¸³Æ® º¯¼ö¸¦ Áö¿öÁÝ´Ï´Ù. ÃÖ±Ù¿¡ »ç¿ëÇÑ set¸¦ Ãë¼Ò½ÃŰ´Â ¹æ¹ýÀ̳ª À§Ä¡ ÀÎÀÚ¿¡ ´ëÇØ¼´Â µ¿ÀÛÇÏÁö ¾Ê´Â´Ù´Âµ¥ ÁÖÀÇÇϼ¼¿ä.
export ¸í·É¾î´Â ÇöÀç ½ºÅ©¸³Æ®³ª ½©ÀÇ ¸ðµç ÀÚ½Ä ÇÁ·Î¼¼½º°¡ º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ºÒÇàÇϰԵµ ½ºÅ©¸³Æ®³ª ½©À» ºÎ¸¥ ºÎ¸ð ÇÁ·Î¼¼½º¿¡°Ô º¯¼ö¸¦ exportÇÒ ¹æ¹ýÀº ¾ø½À´Ï´Ù. export´Â ½ÃÀÛ ÆÄÀÏ¿¡¼ ȯ°æ º¯¼öµîÀ» ¸¸µé¾î ÃʱâÈÇÑÈÄ À¯Àú ÇÁ·Î¼¼½ºµéÀÌ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ¾ÆÁÖ Áß¿äÇÑ ¿ëµµ·Î ¾²ÀÔ´Ï´Ù (3.23절 Âü°í).
declare -r°ú ¶È°°ÀÌ º¯¼ö¸¦ Àбâ Àü¿ëÀ¸·Î ¸¸µé¾î Áִµ¥ ½ÇÁ¦·Î´Â »ó¼ö·Î ¾²°Ú´Ù´Â °ÍÀÌÁö¿ä. ÀÌ·± º¯¼ö °ªÀ» ¹Ù²Ù·Á°í ÇÑ´Ù¸é ¿¡·¯ ¸Þ¼¼Áö¸¦ ¸¸³ª°Ô µË´Ï´Ù. C¿¡¼ const ÇüÁöÁ¤ÀÚ¿Í ºñ½ÁÇÑ °ÍÀ¸·Î º¸½Ã¸é µË´Ï´Ù.
ÆÄÀÏ À̸§¿¡¼ °æ·Î Á¤º¸¸¦ Àß¶ó³»°í ¿ÀÁ÷ ÆÄÀÏ À̸§¸¸ º¸¿©ÁÝ´Ï´Ù. basename $0À̶ó°í ÇÏ¸é ½ºÅ©¸³Æ®°¡ ½©¿¡¼ ¾î¶»°Ô ºÒ·È´ÂÁö ¾Ë°Ô ÇØ ÁÝ´Ï´Ù(ÀÚ±â À̸§ÀÌ ¹«¾ùÀÎÁö). ÀÎÀÚ¸¦ »©¸Ô°í ½ºÅ©¸³Æ®¸¦ ºÒ·¶À» °æ¿ì "»ç¿ë¹ý"À» Ãâ·ÂÇÒ ¶§ À¯¿ëÇÏ°Ô ¾µ ¼ö ÀÖ½À´Ï´Ù.
echo "»ç¿ë¹ý: `basename $0` arg1 arg2 ... argn" |
ÆÄÀÏ À̸§¿¡¼ basenameÀ» Àß¶ó³»°í °æ·Î Á¤º¸¸¸ º¸¿©ÁÝ´Ï´Ù.
참고: basename°ú dirnameÀº ¾î¶² ¹®ÀÚ¿¿¡µµ µ¿ÀÛÀ» Çϱ⠶§¹®¿¡ ²À ½ÇÁ¦ Á¸ÀçÇÏ´Â ÆÄÀÏ À̸§À» ÀÎÀÚ¸¦ ³Ñ°ÜÁÖÁö ¾Ê¾Æµµ µË´Ï´Ù.
Ç¥ÁØ ÀԷ¿¡¼ º¯¼ö°ªÀ» Àоîµå¸³´Ï´Ù. Áï, Űº¸µå¿¡¼ »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¹Þ¾Æ ó¸®ÇÕ´Ï´Ù. -a ¿É¼ÇÀº º¯¼ö¸¦ ¹è¿·Î ó¸®ÇÏ°Ô ÇÕ´Ï´Ù(예 3-89 Âü°í).
예 3-42. read·Î º¯¼ö°ª ÀоîµéÀ̱â
#!/bin/bash echo -n "'var1' º¯¼ö°ªÀ» ³ÖÀ¸¼¼¿ä: " # -n ¿É¼ÇÀº ´º¶óÀÎÀ» Á¦°ÅÇØ ÁÝ´Ï´Ù. read var1 # ¿©±â¼ ¼¼Æ®µÇ±â ¶§¹®¿¡ var1 ¾Õ¿¡ '$'°¡ ¾øÀ½¿¡ ÁÖÀÇÇϼ¼¿ä. echo "var1 = $var1" # ÇϳªÀÇ 'read' ¹®À¸·Î ¿©·¯°³ÀÇ º¯¼ö¸¦ ¼¼Æ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. echo echo -n "'var2'¿Í 'var3' ÀÇ º¯¼ö°ªÀ» ³ÖÀ¸¼¼¿ä(ºóÄÀ̳ª ÅÇÀ¸·Î ±¸ºÐ): " read var2 var3 echo "var2 = $var2 var3 = $var3" # ÇÑ °³ °ª¸¸ ÁØ´Ù¸é ´Ù¸¥ º¯¼ö(µé)Àº ¼¼Æ®°¡ ¾È µÈ »óÅ·Π³²°Ô µË´Ï´Ù(null). exit 0 |
read´Â ÆÄÀÏ¿¡¼ °ªÀ» ÀоîµéÀÏ ¼ö ÀÖ½À´Ï´Ù (Ç¥ÁØÀÔ·ÂÀ» ÆÄÀÏ·Î ÀçÁöÇâ, 3.13절 Âü°í). ÀÔ·Â ÆÄÀÏÀÌ ÇÑ ÁÙ ÀÌ»óÀ̶ó¸é ¿ÀÁ÷ ù ¹øÂ° ÁÙÀÌ º¯¼ö °ªÀÌ µË´Ï´Ù. ¸¸¾à¿¡ read°¡ ÀÎÀÚ¸¦ ÇÑ °³ ÀÌ»ó °®´Â´Ù¸é °¢ º¯¼ö´Â °ø¹é ¹®ÀÚ·Î ³ª´²Áø ¹®ÀÚ¿À» °ªÀ¸·Î °¡Áú °Ì´Ï´Ù. Á¶½ÉÇϼ¼¿ä.
read var1 <data-file echo "var1 = $var1" # var1 °ªÀº "data-file"ÀÇ Ã¹¹øÂ° ÁÙ Àüü read var2 var3 <data-file echo "var2 = $var2 var3 = $var3" # "read"ÀÇ ÀÌ»óÇÑ µ¿ÀÛ # 1) ÀÔ·Â ÆÄÀÏÀÇ Á¦ÀÏ Ã³À½À¸·Î µ¹¾Æ°¡¼ # 2) °¢ º¯¼ö´Â °ø¹é¹®ÀÚ·Î ³ª´²Áø ¹®ÀÚ¿·Î ¼¼Æ®µÊ # 3) ¸¶Áö¸· º¯¼ö´Â ±× ÁÙÀÇ ³ª¸ÓÁö·Î ¼¼Æ® # 4) º¯¼ö °¹¼ö°¡ °ø¹é¹®ÀÚ·Î ³ª´²Áø ¹®ÀÚ¿º¸´Ù ¸¹´Ù¸é ³ª¸ÓÁö º¯¼öµéÀº ¼¼Æ® µÇÁö ¾ÊÀ½ |
´Ü¼øÈ÷ ¼º°øÀûÀÎ Á¾·á »óÅÂ(0)¸¦ ¸®ÅÏ.
# Endless loop while true # : ¿Í µ¿ÀÏ do operation-1 operation-2 ... operation-n # ·çÇÁ¸¦ ºüÁ® ³ª°¥ ¹æ¹ýÀÌ ÇÊ¿ä. done |
´Ü¼øÈ÷ ºñÁ¤»óÀû Á¾·á »óŸ¦ ¸®ÅÏÇÔ.
# Null loop while false do # ÀÌ ºÎºÐÀº ½ÇÇàµÇÁö ¾ÊÀ½. operation-1 operation-2 ... operation-n # ¾Æ¹« Àϵµ ¾È ÀϾ´Ï´Ù. done |
Á¤¼öÀÇ ¼ÒÀμö¸¦ ¸¸µé¾î ³¿.
bash$ factor 27417 27417: 3 13 19 37 |
ÁÖ¾îÁø ¸í·É¾îÀÇ °æ·Î¸íÀ» ½© ÇØ½¬ Å×ÀÌºí¿¡ ÀúÀå. µû¶ó¼ ³ªÁß¿¡ ±× ¸í·É¾î¸¦ ´Ù½Ã ºÎ¸¦ ¶§ $PATH¿¡¼ ¾È ã¾Æµµ µË´Ï´Ù. hash ´Üµ¶À¸·Î ¾²À̸é ÇöÀç ÀÚ½ÅÀÌ ÇØ½¬Çϰí ÀÖ´Â ¸ðµç ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù.
ÀÛ¾÷ µð·ºÅ丮 Ãâ·Â. »ç¿ëÀÚ(³ª ½ºÅ©¸³Æ®)ÀÇ ÇöÀç µð·ºÅ丮¸¦ ¾Ë·ÁÁÝ´Ï´Ù(예 3-43 Âü°í). ³»Àå º¯¼öÀÎ $PWD ¸¦ Àд°Ͱú °°½À´Ï´Ù(3.7절 Âü°í).
ÀÌ ¸í·É¾îµéÀº ÀÛ¾÷ µð·ºÅ丮¸¦ ±â¾ï½ÃŰ´Â ¸ÞÄ«´ÏÁòÀ¸·Î, µð·ºÅ丮µé°£¿¡ ¼ø¼´ë·Î ¿Ô´Ù °¬´Ù ÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. µð·ºÅ丮 À̸§À» ±â¾ïÇϱâ À§Çؼ Ǫ½¬´Ù¿î ½ºÅÃÀ» »ç¿ëÇÕ´Ï´Ù. ¿É¼ÇÀ» Á༠µð·ºÅ丮 ½ºÅÿ¡ ´ëÇÑ ´Ù¾çÇÑ Á¶ÀÛÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
pushd dir-nameÀº dir-name À» µð·ºÅ丮 ½ºÅÿ¡ Áý¾î ³Ö°í dir-name·Î ÇöÀç µð·ºÅ丮¸¦ ¿Å°Ü ÁÝ´Ï´Ù.
popd´Â µð·ºÅ丮 ½ºÅÿ¡¼ Á¦ÀÏ À§¿¡ ÀÖ´Â µð·ºÅ丮¸¦ Áö¿ì¸é¼ ±× µð·ºÅ丮·Î ¿Å°Ü °©´Ï´Ù.
dirsÀº µð·ºÅ丮 ½ºÅÃÀÇ ³»¿ëÀ» º¸¿©ÁÝ´Ï´Ù. pushd³ª popd°¡ ¼º°øÇϸé ÀÚµ¿À¸·Î dirs¸¦ ºÎ¸¨´Ï´Ù.
Çϵå ÄÚµù¾øÀÌ ÇöÀç µð·ºÅ丮¸¦ °è¼Ó ¹Ù²Ù´Â ½ºÅ©¸³Æ®°¡ ÀÌ ¸í·É¾îµéÀ» ¾²¸é ¾ÆÁÖ ÁÁ½À´Ï´Ù. ½ºÅ©¸³Æ®¾È¿¡¼ µð·ºÅ丮 ½ºÅÃÀÇ ³»¿ëÀ» °®°í ÀÖ´Â DIRSTACK ¹è¿ º¯¼ö¿¡ Á¢±ÙÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î ÁÖÀÇÇϼ¼¿ä.
예 3-43. ÇöÀç µð·ºÅ丮 º¯°æÇϱâ
#!/bin/bash dir1=/usr/local dir2=/var/spool pushd $dir1 # ÀÚµ¿À¸·Î 'dirs'¸¦ ½ÇÇàÇÕ´Ï´Ù(µð·ºÅ丮 ½ºÅÃÀÇ ³»¿ëÀ» Ç¥ÁØÃâ·ÂÀ¸·Î »Ñ¸²). echo "Áö±ÝÀº `pwd` µð·ºÅ丮¿¡ ÀÖ½À´Ï´Ù." # ¿ªµû¿ÈÇ¥µÈ `pwd` ¸¦ ¾²¼¼¿ä. # 'dir1'¿¡¼ ¾Æ¹« ÀÏÀ̳ª Çϼ¼¿ä. pushd $dir2 echo "Áö±ÝÀº `pwd` µð·ºÅ丮¿¡ ÀÖ½À´Ï´Ù." # 'dir2'¿¡¼ ¾Æ¹« ÀÏÀ̳ª Çϼ¼¿ä. echo "DIRSTACK ¹è¿ÀÇ Á¦ÀÏ Ã³À½ Ç׸ñÀº $DIRSTACK ÀÔ´Ï´Ù." popd echo "ÀÌÁ¦ `pwd` µð·ºÅ丮·Î µ¹¾Æ¿Ô½À´Ï´Ù." # 'dir1'¿¡¼ ¾Æ¹« ÀÏÀ̳ª Çϼ¼¿ä. popd echo "ÀÌÁ¦ ¿ø·¡ÀÇ `pwd` µð·ºÅ丮·Î µ¹¾Æ¿Ô½À´Ï´Ù." exit 0 |
ÀÌ ¸í·É¾î¸¦ ¸í·É¾î ÁÙ¿¡¼ ºÎ¸£¸é ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ°í ½ºÅ©¸³Æ® ¾È¿¡¼ source file-name¶ó°í ºÎ¸£¸é file-name À» ÀоîµéÀÔ´Ï´Ù. C/C++¿¡¼ #include Áö½ÃÀÚ¿Í °°½À´Ï´Ù. ¿©·¯°³ÀÇ ½ºÅ©¸³Æ®°¡ µ¥ÀÌŸ ÆÄÀÏÀ̳ª ÇÔ¼ö ¶óÀ̺귯¸®¸¦ ¾µ ¶§ À¯¿ëÇÏ°Ô ¾²ÀÔ´Ï´Ù.
예 3-44. µ¥ÀÌŸ ÆÄÀÏ "Æ÷ÇÔÇϱâ"
#!/bin/bash # µ¥ÀÌŸ ÆÄÀÏ ·ÎµåÇϱâ . data-file # "source data-file"°ú °°½À´Ï´Ù. # "data-file" ÆÄÀÏÀº ÇöÀç µð·ºÅ丮¿¡ ²À ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÁÖÀÇÇϼ¼¿ä. # ÀÌÁ¦ ÀÐÀº µ¥ÀÌŸ ÆÄÀÏ¿¡¼ ¸î °³ÀÇ µ¥ÀÌŸ¸¦ ÂüÁ¶ÇØ º¸°Ú½À´Ï´Ù. echo "variable1 (data-file ¿¡ ÀÖ´Â º¯¼ö) = $variable1" echo "variable3 (data-file ¿¡ ÀÖ´Â º¯¼ö) = $variable3" #echo $variable2 #echo $variable4 let "sum = $variable2 + $variable4" echo "variable2 + variable4 (data-file ¿¡ ÀÖ´Â º¯¼ö) ÀÇ ÇÕ = $sum" echo "message1 (data-file ¿¡ ÀÖ´Â º¯¼ö) ´Â \"$message1\" ÀÔ´Ï´Ù." # ÁÖÀÇ: À̽ºÄÉÀÌÇÁ ó¸®µÈ Àοë(quote) print_message data-file ÀÇ print ÇÔ¼ö°¡ ºÎ¸¥ ¸Þ¼¼ÁöÀÔ´Ï´Ù. exit 0 |
À§ÀÇ 예 3-44¿¡¼ data-fileÀº °°Àº µð·ºÅ丮¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
# error free # (¿Å±äÀÌ: # Á¦ÀÏ ÀÁÙ¿¡ ÇѱÛÀÌ µé¾î°¡ ÀÖÀ¸¸é file data-file À̶ó°í ÇßÀ» ¶§ # data-file: International language text # ¶ó°í ³ª¿À³×¿ä. ÀÌ°Í ¶§¹®ÀÎÁö ¿¹Á¦¿¡¼ ÀÌ ÆÄÀÏÀ» . ÇÏ¸é ¿¡·¯°¡ ³³´Ï´Ù. # ¸Ç À§ÀÇ ¹«ÀǹÌÇÑ ¿µ¹®Àº ÀÌ ¿¡·¯¸¦ ÇÇÇϱâ À§ÇÑ °ÍÀÔ´Ï´Ù.) # # ½ºÅ©¸³Æ®°¡ ÀÐÀ» µ¥ÀÌŸ ÆÄÀÏÀÔ´Ï´Ù. # ÀÌ·± Á¾·ùÀÇ ÆÄÀÏÀº º¯¼ö³ª ÇÔ¼öµîÀ» °®°í ÀÖ½À´Ï´Ù. # ½© ½ºÅ©¸³Æ®°¡ 'source'³ª '.' ¸í·É¾î·Î ·ÎµåÇÒ ¼ö ÀÖ½À´Ï´Ù. # º¯¼ö ¸î °³¸¦ ÃʱâÈ ÇսôÙ. variable1=22 variable2=474 variable3=5 variable4=97 message1="¾È³ç, ³Í ´©±¸´Ï?" message2="Áö±ÝÀº µÆ¾î, ¾È³ç." print_message () { # ³Ñ¾î¿Â ¾î¶² ¸Þ¼¼Áöµµ ´Ù ¿¡ÄÚ½ÃÅ´. if [ -z $1 ] then return 1 # ÀÎÀÚ ¾øÀÌ ºÒ·È´Ù¸é ¿¡·¯. fi echo until [ -z "$1" ] do # ÇÔ¼ö·Î ³Ñ¾î¿Â ÀÎÀÚ¸¦ ¸ðµÎ ó¸® echo -n "$1" # Çѹø¿¡ Çϳª¾¿ ó¸®, ¶óÀÎÇǵå´Â Á¦°Å echo -n " " # ³¹¸» »çÀÌ¿¡ ºó ÄÀ» Áý¾î ³ÖÀ½ shift # ´ÙÀ½ done echo return 0 } |
¹é±×¶ó¿îµå·Î µµ´Â ¸ðµç ÀÛ¾÷À̳ª ¿É¼ÇÀ¸·Î ÁÖ¾îÁø ÀÛ¾÷ÀÌ ³¡³¯ ¶§±îÁö ½ºÅ©¸³Æ®¸¦ ÁߴܽÃŵ´Ï´Ù. ¹é±×¶ó¿îµå ÀÛ¾÷ÀÌ ³¡³ª±â Àü¿¡ ½ºÅ©¸³Æ®°¡ ³¡³ª´Â °ÍÀ» ¸·±â À§ÇØ ¾²À̱⵵ ÇÕ´Ï´Ù(°í¾Æ ÇÁ·Î¼¼½º »ý¼ºÀ» ¸·À½).
예 3-45. ÇÁ·Î¼¼½º°¡ ³¡³ª´Â °Í ±â´Ù¸®±â
#!/bin/bash if [ -z $1 ] then echo "»ç¿ë¹ý: `basename $0` find-string" exit 1 fi echo "'locate' µ¥ÀÌŸº£À̽º ¾÷µ¥ÀÌÆ®Áß..." echo "½Ã°£ÀÌ Á» °É¸± ¼öµµ ÀÖ½À´Ï´Ù." updatedb /usr & # ·çÆ®·Î ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù. wait # 'updatedb' °¡ ³¡³ª±â Àü±îÁö ½ºÅ©¸³Æ® µÞ ºÎºÐÀÌ µ¹Áö ¾Ê°Ô ÇÔ locate $1 # wait ´Â ÃÖ¾ÇÀÇ ½Ã³ª¸®¿ÀÀÎ 'updatedb'°¡ ½ÇÇàÁß¿¡ ½ºÅ©¸³Æ®°¡ Á¾·áµÆÀ» °æ¿ì, # 'updatedb'¸¦ °í¾Æ ÇÁ·Î¼¼½º·Î ³²°ÜµÎ´Â ¾àÁ¡À» °®°í ÀÖ½À´Ï´Ù. exit 0 |
Æ÷±×¶ó¿îµå ÀÛ¾÷À» Àá½Ã Áß´Ü ½ÃŰ´Â Control-Z¿Í °°½À´Ï´Ù.
suspend¿Í °°Áö¸¸ ¹é±×¶ó¿îµå ÀÛ¾÷¿¡ ´ëÇØ¼ ¾¹´Ï´Ù.
½©ÀÇ È°¼ºÈµÈ ÀÛ¾÷ Å×ÀÌºí¿¡¼ ƯÁ¤ ÀÛ¾÷À» Áö¿ö¹ö¸³´Ï´Ù.
¹é±×¶ó¿îµå·Î µµ´Â ÀÛ¾÷ ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù. ps¸¸Å ¾µ¸¸ÇÏÁø ¾Ê½À´Ï´Ù.
¸í·É¾î¸¦ ½ÇÇàÇÏ´Â µ¥ ¾²ÀÎ ½Ã½ºÅÛ ½Ã°£¿¡ ´ëÇÑ Åë°è Á¤º¸¸¦ ´ÙÀ½ Çü½ÄÀ¸·Î º¸¿©ÁÝ´Ï´Ù.
0m0.020s 0m0.020s |
Àû´çÇÑ Á¾·á ½Ã±×³ÎÀ» ÁÖ¾î ÇÁ·Î¼¼½º¸¦ °Á¦·Î ³¡³»°Ô ÇÕ´Ï´Ù(예 3-68 Âü°í).
참고: kill -l¸¦ ÇÏ¸é ¸ðµç "½Ã±×³Î"À» º¼ ¼ö ÀÖ½À´Ï´Ù(½Ã±×³Î¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº 3.26절 Âü°í).
[1] | Ç÷¡±×¶õ ÀÏÁ¾ÀÇ ½Åȣó·³ µ¿ÀÛÇÏ´Â ÀÎÀÚ·Î ½ºÅ©¸³Æ®ÀÇ ÇൿÀ» Ű°Å³ª ²ô´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. |