º¯¼ö´Â ¸ðµç ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ½ºÅ©¸³Æ®¿¡¼ ÇÙ½ÉÀÔ´Ï´Ù. »ê¼ú ¿¬»ê°ú ¹®ÀÚ¿ ÆÄ½Ì, ½Éº¼ÀÇ Ãß»óȵ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. º¯¼ö´Â ´ÜÁö ÀÚ½ÅÀÌ °¡Áö°í ÀÖ´Â ½ÇÁ¦ µ¥ÀÌŸÀÇ ¸Þ¸ð¸® »ó À§Ä¡¸¦ ³ªÅ¸³À´Ï´Ù.
º¯¼ö ¹Ù²Ù±â. º¯¼ö À̸§°ú ±× °ª¿¡ ´ëÇØ ÀÚ¼¼È÷ »ìÆìº¾½Ã´Ù. ¸¸¾à¿¡ variable1 ÀÌ º¯¼öÀÇ À̸§À̶ó¸é $variable1 Àº ±× °ªÀ» ³ªÅ¸³À´Ï´Ù. º¯¼ö¸¦ Á¤ÀÇ ÇÒ ¶§³ª º¯¼ö¿¡ °ªÀ» ´ëÀÔ ÇÒ ¶§¸¸ $¾øÀÌ ¾²ÀÔ´Ï´Ù. º¯¼ö¸¦ ´ëÀÔÇÒ ¶§´Â = À» ¾²´Âµ¥(var1=27 ó·³), read ¹®À̳ª ·çÇÁÀÇ Ã³À½¿¡ ¾µ ¼ö ÀÖ½À´Ï´Ù. (for var2 in 1 2 3).
Å« µû¿ÈÇ¥(" ")·Î ¹ÀÎ ÂüÁ¶ °ªÀº º¯¼ö ¹Ù²Ù±â¸¦ ¹æÇعÞÁö ¾Ê½À´Ï´Ù. À̸¦ ºÎºÐÀû Àοë(partial quoting)À̶ó Çϰí, ÀÛÀº µû¿ÈÇ¥(' ')·Î ¹ÀÎ º¯¼ö À̸§Àº ¹®ÀÚ ±×´ë·Î ÇØ¼®µÇ¾î ¾Æ¹«·± ¹Ù²Ù±âµµ ÀϾÁö ¾Ê¾Æ ¿ÏÀüÇÑ Àοë(full quoting)À̶ó°í ÇÕ´Ï´Ù.
$variableÀº ${variable} À» °£´ÜÇÏ°Ô Ç¥½ÃÇÑ °ÍÀ̱⠶§¹®¿¡ °°Àº ÀǹÌÀÔ´Ï´Ù. $variableÀÌ ¹®¹ý ¿¡·¯¸¦ ÀÏÀ¸Å²´Ù¸é ${variable}ÀÇ ÇüÅ·Π¾²¸é µË´Ï´Ù (3.3.1절 Âü°í).
예 3-5. º¯¼ö ´ëÀÔ°ú ´ëü
#!/bin/bash # º¯¼ö: ÇÒ´ç°ú ¹Ù²Ù±â a=37.5 hello=$a # º¯¼ö¸¦ ÃʱâÈ ÇÒ ¶§, = ¾çÂÊ¿¡´Â ºó ÄÀÌ µé¾î°¡¸é ¾È µË´Ï´Ù. echo hello # º¯¼ö ÂüÁ¶°¡ ¾Æ´Õ´Ï´Ù. echo $hello echo ${hello} # À§ÀÇ °Í°ú °°½À´Ï´Ù. echo "$hello" echo "${hello}" echo '$hello' # ÀÛÀº µû¿ÈÇ¥·Î º¯¼ö¸¦ ¹¾î ÁÖ¸é $°¡ ¹®ÀÚ ±×´ë·Î ÇØ¼® µÇ±â ¶§¹®¿¡ # ÂüÁ¶°¡ ÀϾÁö ¾Ê½À´Ï´Ù. # ´Ù¸¥ Á¾·ùÀÇ Àοë(quoting)ÀÇ Â÷ÀÌÁ¡¿¡ ÁÖÀÇÇϼ¼¿ä. # -------------------------------------------------------------- # ¿©·¯ º¯¼öµéÀ» °ø¹é ¹®ÀÚ·Î ±¸ºÐÇØ¼ ÇÑ ÁÙ¿¡¼ ¼¼Æ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. # ÇÏÁö¸¸ ÀÌ·¸°Ô ÇÑ´Ù¸é °¡µ¶¼ºÀÌ ¶³¾îÁö±â ¶§¹®¿¡ Á¶½ÉÇØ¼ ¾²±â ¹Ù¶ø´Ï´Ù. var1=variable1 var2=variable2 var3=variable3 echo echo "var1=$var1 var2=$var2 var3=$var3" # -------------------------------------------------------------- echo; echo numbers="one two three" other_numbers="1 2 3" # º¯¼ö¿¡ °ø¹é ¹®ÀÚ°¡ µé¾î°¡ ÀÖ´Ù¸é Àοë(quote)À» ÇØ Áà¾ß ÇÕ´Ï´Ù. echo "numbers = $numbers" echo "other_numbers = $other_numbers" echo echo "uninitialized variable = $uninitialized_variable" # ÃʱâÈ ¾È µÈ º¯¼ö´Â ³Î °ªÀ» °¡Áý´Ï´Ù(¾Æ¹« °ªµµ ¾ø½À´Ï´Ù). echo exit 0 |
경고 |
ÃʱâÈ µÇÁö ¾ÊÀº º¯¼ö´Â "³Î" °ª(¾Æ¹« °ªµµ ´ëÀÔ µÇÁö ¾Ê¾Ò´Ù´Â ¶æÀÌÁö 0 °ªÀÌ ´ëÀԵǾú´Ù´Â ¶æÀÌ ¾Æ´Õ´Ï´Ù!)À» °®½À´Ï´Ù. °ªÀ» ´ëÀÔÇϱâ Àü¿¡ º¯¼ö¸¦ »ç¿ëÇÏ°Ô µÇ¸é ÇÇÇÒ ¼ö ¾ø´Â ¹®Á¦°¡ »ý±æ°Ì´Ï´Ù. |
$parameter¿Í °°½À´Ï´Ù. Áï, º¯¼ö parameterÀÇ °ªÀ̶õ ¶æÀÔ´Ï´Ù.
¹®ÀÚ¿ º¯¼öµéÀ» ¿¬°áÇÒ ¶§ ¾µ ¼ö ÀÖ½À´Ï´Ù.
your_id=${USER}-on-${HOSTNAME} echo "$your_id" |
parameter°¡ ¼±¾ðÀº µÇ¾ú´Âµ¥ °ªÀÌ ´ëÀÔµÇÁö ¾Ê¾Ò´Ù¸é default°ªÀ» »ç¿ëÇÕ´Ï´Ù.
echo ${username-`whoami`} # "username"¿¡ °ªÀÌ ´ëÀÔ µÇ¾î ÀÖÁö ¾Ê´Ù¸é `whoami`ÀÇ °á°ú¸¦ Ç¥½ÃÇÕ´Ï´Ù. |
참고: ${parameter:-default}¿Í °ÅÀÇ ºñ½ÁÇÕ´Ï´Ù¸¸ ´Ù¸¥ Á¡Àº parameter°¡ ¼±¾ðÀº µÇ¾î Àִµ¥ ³ÎÀÏ °æ¿ì¿¡, :ÀÌ ÀÖ´Ù¸é µðÆúÆ®°ªÀ», :ÀÌ ¾ø´Ù¸é ±×³É ³Î °ªÀ» Àû¿ë½ÃŲ´Ù´Â °ÍÀÔ´Ï´Ù.
#!/bin/bash username0= echo "username0 = ${username0-`whoami`}" # username0 Àº ¼±¾ð¸¸ µÇ°í ³Î °ªÀÌ ÇÒ´ç µÇ¾ú½À´Ï´Ù. # µû¶ó¼ ¾Æ¹« °ªµµ ¾È ÂïÈú °Ì´Ï´Ù. echo "username1 = ${username1-`whoami`}" # username1 Àº ¼±¾ð µÇÁö ¾Ê¾Ò½À´Ï´Ù. # ÂïÈú °Ì´Ï´Ù. username2= echo "username2 = ${username2:-`whoami`}" # username2 ´Â ¼±¾ð µÇ°í ³Î °ªÀÌ ÇÒ´ç µÇ¾ú½À´Ï´Ù. # ÇÏÁö¸¸ Á¶°Ç È®Àνà - ´ë½Å :- °¡ Àֱ⠶§¹®¿¡ ÂïÈú °Ì´Ï´Ù. exit 0 |
ÀÎÀÚ °ªÀÌ ¼¼Æ®µÇ¾î ÀÖÁö ¾ÊÀ» °æ¿ì µðÆúÆ®°ªÀ» Àû¿ë½Ãŵ´Ï´Ù.
µÑ ´Ù ºñ½ÁÇÏÁö¸¸ À§ÀÇ °æ¿ì¿Í ¶È°°Àº Â÷ÀÌÁ¡À» °®½À´Ï´Ù.
echo ${username=`whoami`} # "username"Àº `whoami`ÀÇ °á°ú·Î ¼¼Æ®µË´Ï´Ù. |
ÀÎÀÚ °ªÀÌ ¼¼Æ® µÇ¾î ÀÖÀ» °æ¿ì 'otherwise'°ªÀ» ¾²°í ¾Æ´Ï¶ó¸é ³Î ¹®ÀÚ¿À» ¾¹´Ï´Ù.
À§ÀÇ ¿¹¿¡¼ -¿Í :-ÀÇ °æ¿ì¿Í ¹Ý´ë·Î »ý°¢ÇÏ¸é µË´Ï´Ù.
ÀÎÀÚ°¡ ¼¼Æ®µÇ¾î ÀÖ´Ù¸é ±× °ªÀ» »ç¿ëÇÏ°í ¾Æ´Ï¶ó¸é err_msg¸¦ Ãâ·ÂÇÕ´Ï´Ù.
µÑ ´Ù ºñ½ÁÇÏÁö¸¸ ¿ª½Ã À§¿¡¼¿Í ¸¶Âù°¡Áö·Î ¼±¾ð¸¸ µÇ°í ¼¼Æ®°¡ ¾È µÇ¾î ÀÖÀ» °æ¿ì :ÀÌ ÀÖ´Ù¸é err_msg¸¦ Âï°í ¾ø´Ù¸é ³Î ¹®ÀÚ¿À» ÂïÀ» °ÍÀÔ´Ï´Ù.
예 3-6. ÀÎÀÚ ¹Ù²Ù±â¿Í :
#!/bin/bash # ½Ã½ºÅÛ È¯°æ º¯¼ö ¸î °³¸¦ È®ÀÎÇØ º¾½Ã´Ù. # ¿¹¸¦ µé¾î, ÇöÀç Äֿܼ¡ ÀÖ´Â »ç¶÷ÀÇ À̸§ÀÎ $USER°¡ ¼¼Æ® µÅ ÀÖÁö # ¾Ê´Ù¸é ½Ã½ºÅÛÀº ±× »ç¶÷À» ÀνÄÇÏÁö ¸ø ÇÕ´Ï´Ù. : ${HOSTNAME?} ${USER?} ${HOME} ${MAIL?} echo echo "ÀÌ ¸Ó½Å À̸§Àº $HOSTNAME ÀÔ´Ï´Ù." echo "´ç½ÅÀº $USER ÀÔ´Ï´Ù." echo "´ç½ÅÀÇ È¨ µð·ºÅ丮´Â $HOME ÀÔ´Ï´Ù." echo "´ç½ÅÀÇ ¸ÞÀÏ ¼ö½Å ÆÄÀÏ(INBOX)Àº $MAIL ¿¡ ÀÖ½À´Ï´Ù." echo echo "¸¸¾à ÀÌ ¸Þ¼¼Áö¸¦ ÀÐÀ» ¼ö ÀÖ´Ù¸é," echo "Áß¿äÇÑ È¯°æ º¯¼öµéÀº Á¦´ë·Î ¼¼Æ® µÇ¾î ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù." echo echo # ':' ¿¬»êÀÚ´Â ¿¡·¯ 󸮸¦ ²Ï Àß ÇØ³»´Â °Í(error tolerant) °°½À´Ï´Ù. # {HOSTNAME}, {USER?}, {HOME?}, {MAIL?} ¾ÕÀÇ '$'¸¦ »©°í µ¹·Áµµ # Àß µ¹¾Æ °©´Ï´Ù. ¿Ö ±×·²±î¿ä? # ------------------------------------------------------ # ${variablename?} ¹®µµ ½ºÅ©¸³Æ®¿¡¼ º¯¼ö°¡ ¼¼Æ® µÇ¾î ÀÖ´ÂÁö¸¦ # È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ThisVariable=Value-of-ThisVariable # ¹®ÀÚ¿ º¯¼ö´Â º¯¼ö À̸§¿¡ ¾µ ¼ö ¾ø´Â ¹®ÀÚ°¡ # ¼¼Æ®µÉ ¼öµµ ÀÖÀ¸´Ï ÁÖÀÇÇϼ¼¿ä. : ${ThisVariable?} echo "ThisVariable ÀÇ °ªÀº $ThisVariable ÀÔ´Ï´Ù." echo echo # ZZXy23AB ¿¡ °ªÀÌ ¼¼Æ® µÇ¾î ÀÖÁö ¾Ê´Ù¸é... : ${ZZXy23AB?} # ¿¡·¯ ¸Þ¼¼Áö¸¦ »Ñ¸®°í Á¾·áÇÒ °ÍÀÔ´Ï´Ù. echo "ÀÌ ¸Þ¼¼Áö´Â ¾È º¸ÀÔ´Ï´Ù." exit 0 |
ÀÎÀÚ ¹Ù²Ù±â¿Í È®ÀåÇϱâ. ´ÙÀ½Àº expr ¸í·É¾î¿¡¼ ¹®ÀÚ¿ ¿¬»ê¿¡ ´ëÇØ ºÎÁ·ÇÑ ºÎºÐÀ» º¸¿ÏÇÕ´Ï´Ù(예 3-52 Âü°í). À̰͵éÀº ÆÄÀÏÀÇ °æ·Î¸íÀ» ÆÄ½Ì ÇÒ ¶§ ÁÖ·Î ¾²ÀÔ´Ï´Ù.
variableÀÇ ¾Õ ºÎºÐºÎÅÍ patternÀÌ ¸Â´Â°Ô ÀÖ´Ù¸é °¡Àå ªÀº ºÎºÐ/±ä ºÎºÐÀ» Àß¶ó ³À´Ï´Ù.
variableÀÇ ³¡ºÎºÐºÎÅÍ ¸Â´Â patternÀÌ ÀÖ´Ù¸é °¡Àå ªÀº ºÎºÐ/±ä ºÎºÐÀ» Àß¶ó ³À´Ï´Ù.
Bash 2 ¿¡´Â ´õ ¸¹Àº ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù.
예 3-7. ÆÄÀÏ È®ÀåÀÚ ¹Ù²Ù±â:
#!/bin/bash # rfe # --- # ÆÄÀÏ È®ÀåÀÚ ¹Ù²Ù±â. # # rfe old_extension new_extension # # ¿¹Á¦: # ÇöÀç µð·ºÅ丮ÀÇ ¸ðµç *.gif ÆÄÀÏÀ» *.jpg·Î ¹Ù²Ù±â # rfe gif jpg if [ $# -ne 2 ] then echo "»ç¿ë¹ý: `basename $0` old_file_suffix new_file_suffix" exit 1 fi for filename in *.$1 # ù ¹øÂ° ÀÎÀÚ·Î ³¡³ª´Â ÆÄÀϵéÀ» ã¾Æ¼ do mv $filename ${filename%$1}$2 # ÆÄÀÏ À̸§¿¡¼ ù ¹øÂ° ÀÎÀÚ ºÎºÐÀ» ¶¼¾î³»°í µÎ ¹øÂ° ÀÎÀÚ¸¦ ºÙÀδÙ. done exit 0 |
º¯¼ö var È®Àå, pos ¾Õ ºÎºÐÀ» Àß¶ó³¿.
var¿¡¼ posºÎÅÍ len ¸¸Å ³²±â°í ´Ù Àß¶ó³¿. ÀÌ ¿¬»êÀÚÀÇ ¸ÚÁø ¿¹Á¦´Â 예 A-6 Âü°í
var¿¡¼ óÀ½ ³ªÅ¸³ª´Â patt À» replacement·Î ¹Ù²Þ. replacement ÀÌ »ý·«µÇ¸é pattÀº Áö¿öÁý´Ï´Ù.
À§¿Í ¶È°°À¸³ª ¸ðµç patt¿¡ Àû¿ëµË´Ï´Ù. ¸¶Âù°¡Áö·Î replacementÀ» »ý·«Çϸé pattÀº Áö¿öÁý´Ï´Ù.
예 3-8. ƯÁ¤ ¹®ÀÚ¿À» ÆÄ½ÌÇϱâ À§Çؼ ÆÐÅÏ ¸ÅĪ »ç¿ëÇϱâ
#!/bin/bash var1=abcd-1234-defg echo "var1 = $var1" t=${var1#*-*} echo "var1 (ù¹øÂ° ³ª¿À´Â - ±îÁö¸¦ Àß¶ó³¿) = $t" t=${var1%*-*} echo "var1 (¸¶Áö¸·¿¡ ³ª¿À´Â - ºÎÅÍ Àß¶ó³¿) = $t" echo path_name=/home/bozo/ideas/thoughts.for.today echo "path_name = $path_name" t=${path_name##/*/} # t=`basename $path_name` °ú ¶È°°Àº È¿°ú echo "°æ·ÎÀ̸§(prefix)À» Àß¶ó³½ path_name = $t" t=${path_name%/*.*} # t=`dirname $path_name` °ú ¶È°°Àº È¿°ú echo "ÆÄÀÏÀ̸§(suffix)À» Àß¶ó³½ path_name = $t" echo t=${path_name:11} echo "¾ÕÀÇ 11 ±ÛÀÚ¸¦ Àß¶ó³½ $path_name = $t" t=${path_name:11:5} echo "¾ÕÀÇ 11 ±ÛÀÚ¸¦ Àß¶ó³»°í ´Ù¼¸ ±ÛÀÚ ¸¸ÅÀÇ $path_name = $t" echo t=${path_name/bozo/clown} echo "\"bozo\"¸¦ \"clown\"À¸·Î ¹Ù²Û $path_name = $t" t=${path_name/today/} echo "\"today\"°¡ Áö¿öÁø $path_name = $t" t=${path_name//o/O} echo "¸ðµç o°¡ ´ë¹®ÀÚ·Î ¹Ù²ï $path_name = $t" t=${path_name//o/} echo "¸ðµç o°¡ Áö¿öÁø $path_name = $t" exit 0 |