°í±Þ Bash ½ºÅ©¸³Æà °¡À̵å: Bash¸¦ ÀÌ¿ëÇÑ ½© ½ºÅ©¸³Æà ¿ÏÀü °¡À̵å | ||
---|---|---|
ÀÌÀü | 9Àå. º¯¼ö Àç°ËÅä(Variables Revisited) | ´ÙÀ½ |
Bash ´Â ³î¶øµµ·Ï ¸¹Àº ¹®ÀÚ¿ Á¶ÀÛ ¿¬»êÀ» Á¦°øÇÕ´Ï´Ù. ÇÏÁö¸¸ ºÒÇàÇÏ°Ôµµ ÀÌ µµ±¸µéÀº Çϳª·Î ÅëÇյǾî ÀÖÁö ¾Ê½À´Ï´Ù. ¸î °³´Â ¸Å°³º¯¼ö ġȯÀÇ ¼ºê¼ÂÀÌ°í ´Ù¸¥ °ÍÀº À¯´Ð½ºÀÇ expr ¸í·É¾îÀÇ ±â´É¿¡ ÇØ´çÇÕ´Ï´Ù. ÀÌ·¸±â ¶§¹®¿¡ ÀÌ·± È¥µ¿½º·¯¿ò¿¡ ´ëÇÑ ¾ð±Þµµ ¾øÀÌ ¸í·É¾î ¹®¹ý¿¡ ÀÏ°ü¼ºÀÌ ¾ø°í ±â´ÉÀÌ Áߺ¹µÇ¾î ÀÖ½À´Ï´Ù.
¹®ÀÚ¿ ±æÀÌ
stringZ=abcABC123ABCabc echo ${#stringZ} # 15 echo `expr length $stringZ` # 15 echo `expr "$stringZ" : '.*'` # 15 |
¹®ÀÚ¿ ½ÃÀÛ¿¡¼ºÎÅÍ ¸ÅĪµÇ´Â ¹®ÀÚ¿Á¶°¢(substring)ÀÇ ±æÀÌ
$substring Àº Á¤±Ô Ç¥Çö½ÄÀÔ´Ï´Ù.
$substring Àº Á¤±Ô Ç¥Çö½ÄÀÔ´Ï´Ù.
stringZ=abcABC123ABCabc # |------| echo `expr match "$stringZ" 'abc[A-Z]*.2'` # 8 echo `expr "$stringZ" : 'abc[A-Z]*.2'` # 8 |
À妽º
$string ¿¡¼ ÀÏÄ¡ÇÏ´Â $substring ÀÇ Ã¹ ¹®ÀÚÀÇ À§Ä¡.
stringZ=abcABC123ABCabc echo `expr index "$stringZ" C12` # 6 # C ÀÇ À§Ä¡. echo `expr index "$stringZ" 1c` # 3 # 'c' (3¹ø° À§Ä¡¿¡ ÀÖ´Â) °¡ '1' º¸´Ù ¸ÕÀú ÀÏÄ¡µÊ. |
C ÀÇ strchr()¿Í °ÅÀÇ ºñ½ÁÇÕ´Ï´Ù.
¹®ÀÚ¿Á¶°¢ ÃßÃâ(Substring Extraction)
$string ÀÇ $position ºÎÅÍÀÇ ¹®ÀÚ¿Á¶°¢À» ÃßÃâ.
string ¸Å°³º¯¼ö°¡ "*" À̰ųª "@" ¶ó¸é position¿¡¼ ½ÃÀÛÇÏ´Â À§Ä¡ ¸Å°³º¯¼ö [1] ¸¦ ÃßÃâÇØ ³À´Ï´Ù.
$stringÀÇ $positionºÎÅÍ $length¸¸ÅÀÇ ¹®ÀÚ¸¦ ÃßÃâÇØ ³À´Ï´Ù.
stringZ=abcABC123ABCabc # 0123456789..... # 0 ºÎÅÍ ½ÃÀÛÇÏ´Â À妽Ì. echo ${stringZ:0} # abcABC123ABCabc echo ${stringZ:1} # bcABC123ABCabc echo ${stringZ:7} # 23ABCabc echo ${stringZ:7:3} # 23A # 3±ÛÀÚÂ¥¸® ¹®ÀÚ¿Á¶°¢. |
string ¸Å°³º¯¼ö°¡ "*" ³ª "@" ¶ó¸é À§Ä¡ position¿¡¼ ½ÃÀÛÇÏ´Â ¸Å°³º¯¼öÀÇ ÃÖ´ë length¸¦ ÃßÃâÇØ ³À´Ï´Ù.
echo ${*:2} # µÎ¹ø° ÀÌÈÄÀÇ À§Ä¡ ¸Å°³º¯¼ö¸¦ ¿¡ÄÚ. echo ${@:2} # À§¿Í °°À½. echo ${*:2:3} # 2,3,4¹ø(3°³) À§Ä¡ ¸Å°³º¯¼ö¸¦ ¿¡ÄÚ. |
$stringÀÇ $positionºÎÅÍ $length¸¸ÅÀÇ ¹®ÀÚ¸¦ ÃßÃâÇØ ³À´Ï´Ù.
stringZ=abcABC123ABCabc # 123456789...... # 1 ºÎÅÍ ½ÃÀÛÇÏ´Â À妽Ì. echo `expr substr $stringZ 1 2` # ab echo `expr substr $stringZ 4 3` # ABC |
$stringÀÇ Ã³À½¿¡¼ºÎÅÍ Á¤±Ô Ç¥Çö½ÄÀÎ $substringÀ» ÃßÃâÇØ ³À´Ï´Ù.
$stringÀÇ Ã³À½¿¡¼ºÎÅÍ Á¤±Ô Ç¥Çö½ÄÀÎ $substringÀ» ÃßÃâÇØ ³À´Ï´Ù.
stringZ=abcABC123ABCabc echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1 echo `expr "$stringZ" : '\(.[b-c]*[A-Z]..[0-9]\)'` # abcABC1 # À§ÀÇ µÎ °¡Áö ÇüÅ´ µ¿ÀÏÇÕ´Ï´Ù. |
¹®ÀÚ¿Á¶°¢ »èÁ¦(Substring Removal)
$stringÀÇ ¾Õ ºÎºÐ¿¡¼ºÎÅÍ °¡Àå ª°Ô ÀÏÄ¡ÇÏ´Â $substringÀ» »èÁ¦.
$stringÀÇ ¾Õ ºÎºÐ¿¡¼ºÎÅÍ °¡Àå ±æ°Ô ÀÏÄ¡ÇÏ´Â $substringÀ» »èÁ¦.
stringZ=abcABC123ABCabc # |----| # |----------| echo ${stringZ#a*C} # 123ABCabc # 'a'¿Í 'C' »çÀÌ¿¡¼ °¡Àå ª°Ô ÀÏÄ¡µÇ´Â ºÎºÐÀ» »èÁ¦. echo ${stringZ##a*C} # abc # 'a'¿Í 'C' »çÀÌ¿¡¼ °¡Àå ±æ°Ô ÀÏÄ¡µÇ´Â ºÎºÐÀ» »èÁ¦. |
$stringÀÇ µÞ ºÎºÐ¿¡¼ºÎÅÍ °¡Àå ª°Ô ÀÏÄ¡ÇÏ´Â $substringÀ» »èÁ¦.
$stringÀÇ µÞ ºÎºÐ¿¡¼ºÎÅÍ °¡Àå ±æ°Ô ÀÏÄ¡ÇÏ´Â $substringÀ» »èÁ¦.
stringZ=abcABC123ABCabc # || # |------------| echo ${stringZ%b*c} # abcABC123ABCa # $stringZÀÇ µÞ ºÎºÐºÎÅÍ °è»êÇؼ 'b'¿Í 'c' »çÀÌ¿¡¼ °¡Àå ª°Ô ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» »èÁ¦. echo ${stringZ%%b*c} # a # $stringZÀÇ µÞ ºÎºÐºÎÅÍ °è»êÇؼ 'b'¿Í 'c' »çÀÌ¿¡¼ °¡Àå ±æ°Ô ÀÏÄ¡ÇÏ´Â ºÎºÐÀ» »èÁ¦. |
¿¹ 9-9. ±×·¡ÇÈ ÆÄÀÏÀ» ´Ù¸¥ Æ÷¸Ë È®ÀåÀÚ·Î À̸§À» ¹Ù²Ù¸é¼ º¯È¯
#!/bin/bash # cvt.sh: # ƯÁ¤ µð·ºÅ丮ÀÇ ¸ðµç MacPaint À̹ÌÁö ÆÄÀÏÀ» "pbm" Æ÷¸ËÀ¸·Î º¯È¯. # Brian Henderson(bryanh@giraffe-data.com)ÀÌ °ü¸®ÇÏ°í ÀÖ´Â "netpbm" ÆÐÅ°ÁöÀÇ #+ "macptopbm" À» »ç¿ëÇÔ. # Netpbm Àº °ÅÀÇ ´ëºÎºÐÀÇ ¸®´ª½º ¹èÆ÷ÆÇ¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. OPERATION=macptopbm SUFFIX=pbm # »õ ÆÄÀÏÀ̸§ È®ÀåÀÚ. if [ -n "$1" ] then directory=$1 # µð·ºÅ丮 À̸§ÀÌ ÀÎÀÚ·Î ÁÖ¾îÁú °æ¿ì... else directory=$PWD # ¾Æ´Ï¸é ÇöÀç µð·ºÅ丮¿¡ ´ëÇؼ. fi # ´ë»ó µð·ºÅ丮ÀÇ ¸ðµç ÆÄÀÏÀ» ".mac" È®ÀåÀÚÀÇ MacPaint À̹ÌÁö ÆÄÀÏÀ̶ó°í °¡Á¤. for file in $directory/* # ÆÄÀÏÀ̸§ globbing. do filename=${file%.*c} # ÆÄÀÏÀ̸§¿¡¼ ".mac" È®ÀåÀÚ¸¦ ¶¼¾î³¿ #+ ('.*c' ´Â '.' °ú 'c'¸¦ Æ÷ÇÔÇؼ µÑ »çÀÌÀÇ #+ ¸ðµç °Í°ú ÀÏÄ¡ÇÔ). $OPERATION $file > $filename.$SUFFIX # º¯È¯µÈ ÆÄÀÏÀ» »õ ÆÄÀÏÀ̸§À¸·Î ÀçÁöÇâ. rm -f $file # º¯È¯ÈÄ ¿ø·¡ ÆÄÀÏ »èÁ¦. echo "$filename.$SUFFIX" # °á°ú¸¦ Ç¥ÁØÃâ·ÂÀ¸·Î ·Î±ë. done exit 0 |
¹®ÀÚ¿ Á¶°¢ ´ëÄ¡(Substring Replacement)
óÀ½ ÀÏÄ¡ÇÏ´Â $substringÀ» $replacement·Î ´ëÄ¡.
ÀÏÄ¡ÇÏ´Â ¸ðµç $substringÀ» $replacement·Î ´ëÄ¡.
stringZ=abcABC123ABCabc echo ${stringZ/abc/xyz} # xyzABC123ABCabc # óÀ½ ÀÏÄ¡ÇÏ´Â 'abc'¸¦ 'xyz'·Î ´ëÄ¡. echo ${stringZ//abc/xyz} # xyzABC123ABCxyz # ÀÏÄ¡ÇÏ´Â ¸ðµç 'abc'¸¦ 'xyz'·Î ´ëÄ¡. |
$substringÀÌ $stringÀÇ ¸Ç ¾Õ¿¡¼ ÀÏÄ¡Çϸé $replacement·Î ´ëÄ¡.
$substringÀÌ $stringÀÇ ¸Ç µÚ¿¡¼ ÀÏÄ¡Çϸé $replacement·Î ´ëÄ¡.
stringZ=abcABC123ABCabc echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc # ¸Ç ¾Õ¿¡¼ ÀÏÄ¡ÇÏ´Â 'abc'¸¦ 'xyz'·Î ´ëÄ¡. echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ # ¸Ç µÚ¿¡¼ ÀÏÄ¡ÇÏ´Â 'abc'¸¦ 'xyz'·Î ´ëÄ¡. |
½ºÅ©¸³Æ®¿¡¼ ¹®ÀÚ¿ Á¶ÀÛ¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ »çÇ×Àº 9.3Àý¿Í expr ¸í·É¾î¿¡¼ ¹®ÀÚ¿ Á¶ÀÛ°ú °ü·ÃµÈ ºÎºÐÀ» Âü°íÇϼ¼¿ä. ½ºÅ©¸³Æ® ¿¹Á¦´Â ´ÙÀ½À» Âü°íÇϼ¼¿ä.
[1] | ÀÌ ±ÔÄ¢Àº ¸í·É¾îÁÙ ÀÎÀÚ³ª ÇÔ¼ö·Î ³Ñ°ÜÁö´Â ¸Å°³º¯¼ö¿¡µµ Àû¿ëµË´Ï´Ù. |