¸®´ª½º °ü·Ã °Á¶õ |
---|
Á¦¸ñ | ±âº»ÀûÀÎ shell script 1998/05/08 (10:18) |
À̸§ | ±èÈ¿¿ø |
¹øÈ£ | 28 |
Á¶È¸ | 648 |
º»¹® |
3.25.1 ±âº»ÀûÀÎ ½© ½ºÅ©¸³Æ® ¿©·¯ºÐµéÀÌ ¸®´ª½º¸¦ ¹è¿ì¸é¼ °¡Àå ¸¹ÀÌ Á¢ÇÏ°Ô µÇ´Â °ÍÀÌ ½©À̶ó´Â °ÍÀÔ ´Ï´Ù. ÀÌ·¯ÇÑ ½©¿¡´Â ÇÁ·Î±×·¥À» ¼öÇàÇϴµ¥ µµ¿òÀÌ µÇµµ·Ï ¸í·ÉÇà ºÐ¼®±â °¡ Àִµ¥ ÀÌ·¯ÇÑ ¸í·É¾î ºÐ¼®±â¸¦ ½© ½ºÅ©¸³Æ®¶ó°í ÇÕ´Ï´Ù. ½© ½ºÅ©¸³Æ®¶ó°í ÇÏ¸é »ý¼ÒÇÑ ºÐµµ ¸¹ÀÌ ÀÖÀ»ÁÙ·Î ¾Ð´Ï´Ù. ¾Æ¸¶ ¿©·¯ºÐµéÀÌ Ã³À½ µµ½º¸¦ ¹è¿ï ¶§ BAT¶ó´Â È®ÀåÀÚ¸¦ ¸¹ÀÌ º¸¾ÒÀ»°Ì´Ï´Ù. ½© ½ºÅ©¸³Æ®¶ó´Â °Íµµ ÀÌ·¯ÇÑ BATÆÄÀÏÀ» ±¸¼ºÇÏ´Â ¹®Àå°ú °°´Ù°í »ý°¢ÇÏ¸é ½¬¿ï°Ì´Ï´Ù. ±×·¯ ³ª UNIX¿¡ Æ÷ÇÔµÈ ½© ½ºÅ©¸³Æ®´Â Á»´õ È®ÀåµÇ¾îÀÖ¾î º¸±â¿¡´Â ¹«Ã´À̳ª º¹ ÀâÇØ º¸ÀÔ´Ï´Ù. ±×·¡¼ ¾î·Æ´Ù°í ¸¹À̵é ÇÕ´Ï´Ù. ±×·¯³ª ÀÌ·¸°Ô º¹ÀâÇØ º¸ À̴µ¥¿¡´Â ÀÌÀ¯°¡ ÀÖ½À´Ï´Ù. ¹Ù·Î ÇÁ·Î±×·¡¹ÖÀ̶ó°í Ç¥ÇöÇÒÁ¤µµ·Î ´Ù¾çÇÑ ±â´ÉµéÀ» Á¦°øÇÏ°í Àְŵç¿ä. ±×·¯¸é ¿©±â¿¡¼´Â ¿©·¯µéÀÌ ¸®´ª½º¸¦ »ç¿ëÇÏ¸é¼ °¡Àå ¸¹ÀÌ Á¢ÇÏ°Ô µÇ´Â º»½©(bash)À» Áß½ÉÀ¸·Î ¹®¹ý º¸´Ù´Â ½ÇÁ¦ »ç¿ëÇÏ´Â ¹æ¹ýÀ» Áß½ÉÀ¸·Î ¼³¸íÇØ ³ª°¡°Ú½À´Ï´Ù. ½© ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ¹æ¹ýÀº Å©°Ô µÎ°¡Áö°¡ ÀÖ½À´Ï´Ù. ù ¹ø°·Î ½ÇÇà Æ۹̼ÇÀ» ÅëÇÑ ½ÇÇàÀÌ Àִµ¥ ÀÌ´Â °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ¹æ¹ýÁß¿¡ Çϳª·Î ½º Å©¸³Æ®¿¡ ½ÇÇà °¡´ÉÇÑ Æ۹̼ÇÀ» ÁÖ¾î¼ ½ÇÇàÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ¾Æ¸¶ ¿©·¯ºÐ µéÀÌ ¸®´ª½º¸¦ Á¶±ÝÀÌ¶óµµ »ç¿ëÇØ º¸¾Ò´Ù¸é ÆÄÀÏÁß Ã¹ÁÙ¿¡ '#!/bin/bash' ÀÌ·¸°Ô µÇ¾î ÀÖ´Â °æ¿ì¸¦ º»ÀûÀÌ ÀÖÀ» °Ì´Ï´Ù. ¾ùµíº¸¸é ÁÖ¼®Ã³¸®µÈ°Í ó ·³ º¸À̳ª ±×·¸Áö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ºÐ¼®±â·Î bash¸¦ »ç¿ëÇÏ°Ú´Ù´Â Àǹ̰¡ ³»Á¦µÈ ¹®ÀåÀÔ´Ï´Ù. <Âü°í ½ÃÀÛ> À̹®ÀåÀº ¼Ò½ºÀÇ Ã¹¹ø° ÁÙ¿¡ ¹Ýµå½Ã À§Ä¡ÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÁÖ¼® 󸮵ǰŵç¿ä. <Âü°í ³¡> ±×¸®°í ±× ´ÙÀ½À¸·Î ½ºÅ©¸³ÅÍÀÇ ½ÇÇà Æ۹̼ÇÀ» ÁÖ¾î¾ß Çϴµ¥ ÀÌ´Â chmod¶ó ´Â ¸í·ÉÀ» »ç¿ëÇÏ¿© °¡´ÉÇÏ°Ô ¸¸µì´Ï´Ù. ÀÌ¹Ì ¾Õ¿¡¼ ¾Ë¾Æ º¸¾ÒÁÒ? ¸¸¾à¿¡ ¿©·¯ºÐµéÀÌ ¾î¶² ½© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ°í ±× ÆÄÀÏ À̸§À» test.sh ¶ó°í ÀúÀåÇß´Ù¸é # chmod +x test.sh [Enter] À§ ¸í·É ¸¸À¸·Î ½ÇÇà Æ۹̼ÇÀ» °®°í µ¶¸³ÀûÀ¸·Î ½ÇÇà °¡´ÉÇÏ°Ô µÇ´Â°ÍÀÔ´Ï ´Ù. Àü¹ÝÀûÀÎ ¿ø¸®¸¦ ¾Ë°ÚÁÒ? µÎ ¹ø°·Î ½© ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Â ¹æ¹ýÀº ½©À» ÀÌ¿ëÇؼ ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ¹æ¹ýÀº ¸¹ÀÌ »ç¿ëµÇ´Â ¹æ¹ýÀº ¾Æ´ÏÁö¸¸ °¡²û¾¿Àº Çʿ伺À» ´À³¢°Ô µÇ´Â ¹æ¹ýÀ¸·Î Â¥¿©Áø ½ºÅ©¸³Æ®¸¦ Å×½ºÆ® ÇÏ´Â ¹æ¹ýÀ¸·Î ¸¹ÀÌ »ç¿ëµË´Ï´Ù. # bash ./test.sh [Enter] ¿Í °°ÀÌ »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à¿¡ ¿©·¯ºÐµéÀÌ µÎ ¹ø° ¹æ¹ýÀ» ÀÌ¿ëÇؼ ½© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ¿´´Ù¸é ¼Ò½º³» ù¹ø° ÁÙ¿¡ '#!/bin/bash'¶ó´Â ¹®ÀåÀÌ ¾ø ¾îµµ ½ÇÇà °¡´ÉÇÏ°Ô µË´Ï´Ù. ÀÚ ±×·¯¸é °£´ÜÇÏ°Ô ½© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇϱâ À§ÇÑ ±âº» ¹®¹ý¿¡ ´ëÇØ ¾Ë¾Æ º¾ ½Ã´Ù. <Âü°í ½ÃÀÛ> ½ºÅ©¸³Æ®³»ºÎ¿¡¼ ¿ÜºÎ ¸í·É, Áï ls³ª, kill°ú °°Àº ¸í·ÉÀ» ¼öÇàÇϱâ À§Çؼ ´Â ¹Ýµå½Ã ``¸¦ »ç¿ëÇÏ¿©¾ß ¿ÜºÎ ¸í·ÉÀ¸·Î ó¸® ÇÏ°Ô µË´Ï´Ù. ±×·¸Áö ¾Ê°í, ''¸¦ »ç¿ëÇÏ°Ô µÇ¸é ½ºÅ©¸³Æ®ºÐ¼®±â´Â À̸¦ ¹®ÀÚ¿·Î ÀνÄÇÏ°Ô µÇ¹Ç·Î ÁÖÀÇ ÇÏ¼Å¾ß ÇÕ´Ï´Ù. <Âü°í ³¡> 1) echo ¿©·¯ºÐµéÀÌ DOS¿¡¼ ¹èÄ¡ÆÄÀÏÀ̶ó´Â BATÆÄÀÏÀ» ¸¸µé¾î º»ÀûÀÌ ÀÖ´Ù¸é ¾Ë°Í ÀÔ´Ï´Ù. ¹Ù·Î ¹®ÀÚ¿À» Ãâ·ÂÇÏ´Â ¸í·ÉÀÌÁÒ. ±×·¯¸é echoÀÇ ½ÇÁ¦ ¿¹¸¦ º¾½Ã´Ù. echo "Test" echo -n "Test" À§ÀÇ µÎ ¿¹¿¡´Â Â÷ÀÌ°¡ ÀÖ½À´Ï´Ù. ¿ì¼± ù¹ø° ¿¹¿¡¼´Â Test¶ó´Â ¹®ÀÚ¿ Ãâ ·ÂÈÄ Ä¿¼ÀÇ À§Ä¡°¡ ´ÙÀ½ ¶óÀÎÀÇ Ã³À½À¸·Î À̵¿ÇÏ°Ô µÇÁö¸¸ µÎ¹ø° ¿¹¿¡ ¼´Â Test¶ó´Â ¹®ÀÚ¿ Ãâ·ÂÈÄ Ä¿¼ÀÇ À§Ä¡°¡ Ãâ·Â¹®ÀÚ¿ ´ÙÀ½¿¡ À§Ä¡ÇÏ°Ô µÇ°Åµç¿ä. 2) ¿ÜºÎ ÀÎÀÚ($#,$@,$0,$1... °ú shift) ÀÌ°ÍÀº ¹Ù·Î ½ºÅ©¸³Æ®¾È¿¡¼ ¿ÜºÎ¿¡¼ Àü´ÞµÇ´Â °ªÀ» ¹Þ´Â ¹æ¹ýÀ» ¸»ÇÏ´Â °ÍÀ¸·Î ¸¸¾à¿¡ test.sh¶ó´Â ½ºÅ©¸³Æ®°¡ ÀÖÀ» °æ¿ì ¿ÜºÎ¿¡¼ # ./test.sh 1 2 3 4 [Enter] ¶ó°í ½ÇÇàÀ» ÇÏ¿´À»¶§, test.sh¶ó´Â ½ºÅ©¸³Æ®¿¡´Â 4°³ÀÇ ÀÎÀÚ°¡ Àü´Þ µÇ´Â µ¥ $1¿¡´Â ù¹ø° ÀÎÀÚÀÎ '1'À̶ó´Â °ªÀÌ µé¾î ¿À°Ô µÇ¸ç $2¿¡´Â µÎ¹ø° ÀÎÀÚÀÎ '2'°¡ ÀÌ·¸°Ô $4¿¡´Â '4'¶ó´Â °ªÀÌ µé¾î ¿À°Ô µË´Ï´Ù. ±×·¯¸é À̵é ÀÎÀÚÀÇ °¹¼ö´Â ¾Ë¼ö ¾øÀ»±î¿ä? ÀÖ½À´Ï´Ù. '$#' ¶ó´Â º¯¼ö¸¦ ÅëÇؼ ¾ò¾î ¿Ã¼ö ÀÖ½À´Ï´Ù. Áï, echo $# ¶ó°í test.sh¾È¿¡¼ Ãâ·ÂÀ» ÇÏ°Ô µÇ¸é 4¶ó´Â °ªÀÌ È¸é¿¡ Ãâ·Â µÇ°Ô µË´Ï ´Ù. ±×·¯¸é À̵é ÀÎÀÚ¸¦ ¸ðµÎ ÁöĪÇÏ´Â º¯¼ö´Â? ¹Ù·Î, "$@" ¶ó´Â º¯¼ö¸¦ ÅëÇؼ ¸ðµÎ ¾ò¾î ¿Ã¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ¸¶Áö¸·À¸·Î shift¿¡ ´ëÇØ ¾Ë¾Æ º¾½Ã´Ù. ÀÌ°ÍÀº ¹Ù·Î ÀÎÀÚ¸¦ ¿ÞÂÊÀ¸·Î ¹Ð¾î ¹ö¸³´Ï´Ù. ¿ÞÂÊÀ¸·Î ÀÎÀÚ¸¦ ¹Ð¸é °¡Àå óÀ½¿¡ ÀÖ´Â ÀÎÀÚ´Â ¾ø¾î Áö°Ô µÇ´Â°ÅÁÒ. Áï shift¶ó´Â ¸í·É ¼öÇàÈÄ echo $1 À̶ó´Â ¸í·ÉÀ» ¼öÇàÇÏ¿´À» °æ¿ì "1"ÀÌ È¸é¿¡ ÂïÈ÷´Â °ÍÀÌ ¾Æ´Ï¶ó, "2"¶ó´Â °ªÀÌ È¸é¿¡ ÂïÈ÷°Ô µË´Ï´Ù. ¸¸¾à¿¡ ´õÀÌ»ó °ªÀÌ ¾øÀ» °æ¿ì¿¡´Â ''(NULL) ÀÌ È¸é¿¡ Ãâ·Â(?)µÇ°Ô µË´Ï´Ù. 3) exit ¿Í return ½ºÅ©¸³Æ®¸¦ ¼öÇàÇÏ´Â µµÁß Á¾·áÇÏ´Â ¹æ¹ýÀº Å©°Ô µÎ°¡Áö°¡ ÀÖ½À´Ï´Ù. Çϳª ´Â exit¶ó´Â ¸í·ÉÀÌ°í ´Ù¸¥ Çϳª´Â returnÀ̶ó´Â ¸í·ÉÀÌ´Ù. ±×·¯¸é ÀÌ µÎ ¸í·ÉÀÇ Â÷ÀÌ´Â ¹«¾ùÀϱî¿ä? exit ¸í·ÉÀº ½ºÅ©¸³Æ®¸¦ ¿ÏÀüÈ÷ Á¾·áÇÕ´Ï´Ù. Áï ½ºÅ©¸³Æ®ÀÇ ¾î¶°ÇÑ À§Ä¡¿¡ ÀÖ´õ¶óµµ exit¶ó´Â ¸í·É¾î¸¦ »ç¿ëÇÏ¸é ½ºÅ© ¸³Æ®°¡ Á¾·áµÇ°Ô µË´Ï´Ù. ±×·¯³ª returnÀº ÇöÀç ¼öÇàÁßÀÎ ÇÔ¼ö¸¦ Á¾·áÇÕ´Ï ´Ù. ¸¸¾à¿¡ ¿©·¯ºÐµéÀÌ ½ºÅ©¸³Æ®¾È¿¡¼ ÇÔ¼ö¸¦ È£ÃâÇß´Ù°í ÇսôÙ. ±×·±µ¥ ÇÔ¼ö¾È¿¡¼ Áß°£¿¡ ºüÁ® ³ª¿À°í ½Í´Ù¸é ¾î¶»°Ô ÇÒ±î¿ä? À̶§¿¡ returnÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. <Âü°í ½ÃÀÛ> ÇÔ¼ö°¡ ¾Æ´Ñ ½ºÅ©¸³Æ®¾È¿¡¼ returnÀ» »ç¿ëÇÏ°Ô µÇ¸é exit¿Í °°Àº ¿ªÇÒÀ» ÇÕ´Ï´Ù. <Âü°í ³¡> ÀÚ ±×·¯¸é °£´ÜÇÑ ¿¹¸¦ º¾½Ã´Ù. #!/bin/sh returntest() { echo "test1" return 0 echo "test2" } returntest echo "returntest" ¾ÆÁÖ °£´ÜÇÑ ¿¹ÀÔ´Ï´Ù. ÀÌ ¿¹¸¦ ½ÇÇàÇÏ°Ô µÇ¸é, "test1"À̶ó´Â ¹®ÀÚ¿À» Ãâ·Â ÇÏ°í "returntest"¶ó´Â ¹®ÀÚ¿À» Ãâ·ÂÇÏ°Ô µË´Ï´Ù. returnÀÇ ¿ªÇÒÀ» ÇÑ´«¿¡ ¾Ë¾Æ º¸°ÚÁÒ? ¸¸¾à¿¡ ¿©±â¿¡ return 0 ´ë½Å¿¡ exit 0À» ³Ö¾ú´Ù¸é "test1"ÀÌ ¶ó´Â ¹®ÀÚ¿¸¸ Ãâ·ÂµÇ¾úÀ» °Ì´Ï´Ù. 4) If..Else ¹® ÀÌ ¹®¹ýÀº Á¶°Ç¿¡ ¸ÂÀ» °æ¿ì thenÀÌÈÄÀÇ ¹®ÀåÀ» ¼öÇàÇÏ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì ¿¡´Â elif ¶Ç´Â else¹®À» ¼öÇàÇÏ°Ô µË´Ï´Ù. if [ -f /etc/redhat-release ]; then cat /etc/redhat-release else echo "release Unknow" fi À§ÀÇ ½ºÅ©¸³Æ®´Â /etc/redhat-release°¡ Á¸Àç ÇÑ´Ù¸é /etc/redhat-release ¶ó´Â ÆÄÀÏÀ» ȸ鿡 º¸¿©ÁÖ°Ô µÇ¸ç ¾øÀ» °æ¿ì¿¡´Â "release Unknow"À» Ãâ·Â ÇÏ°Ô µË´Ï´Ù. if ¹®ÀåÀÇ ³¡¿¡ fi¸¦ »ç¿ëÇß½À´Ï´Ù. ÁÖÀÇÇϼ¼¿ä. À§¿¡¼ º¸¸é -f¶ó´Â ¿É¼ÇÀÌ Àִµ¥ ÀÌ°ÍÀº /etc/redhat-release¶ó´Â ÆÄÀÏ ÀÌ Á¸ÀçÇÒ °æ¿ì ÂüÀÇ °ªÀ» °®°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ¿Ü¿¡µµ ÆÄÀÏ¿¡ °ü·ÃµÈ ¸¹ Àº ¿É¼ÇÀÌ Àִµ¥ °£´ÜÈ÷ ¾Ë¾Æº¸°í ³Ñ¾î °©½Ã´Ù. -f ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù¸é -d µð·¢Å丮À̸é -x ½ÇÇà °¡´ÉÇÏ´Ù¸é À§ÀÇ ¿É¼ÇÀÌ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ÆÄÀÏ °ü·Ã ¿É¼ÇÀÌ´Ï °£´ÜÈ÷ ¿Ü¿öµÎ±â ¹Ù¶ø ´Ï´Ù. <Âü°í ½ÃÀÛ> °£´ÜÇÑ If¹® ¹®¹ý : Á¶°ÇÀÌ ÂüÀÏ °æ¿ì [ <Á¶°Ç> ] && <½ÇÇ๮> Á¶°ÇÀÌ °ÅÁþÀÏ °æ¿ì [ <Á¶°Ç> ] || <½ÇÇ๮> À§¿Í °°ÀÌ °£´ÜÈ÷ ¸¸µé¼ö ÀÖ½À´Ï´Ù. ·¹µåÇÞ ¸®´ª½º »ç¿ëÀÚ¶ó¸é /etc/rc.d/init.d/ ¾ÈÀÇ ½ºÅ©¸³Æ® ¾È¿¡¼ ÀÚÁÖ º¸°Ô µÇ´Â ¹®¹ýÀÏ °ÍÀÔ´Ï´Ù. ±× ¿¹·Î /etc/rc.d/init.d/nfsfs ¶ó´Â ½ºÅ©¸³Æ®¸¦ º¸¸é [ ${NETWORKING} = "no" ] && exit 0 À§¿Í °°Àº ºÎºÐÀÌ ÀÖ½À´Ï´Ù. À̺κÐÀº À§ÀÇ ¹®¹ý ´ë·Î NETWORKINGÀ̶ó´Â ȯ °æ º¯¼ö°¡ "no"·Î Á¤ÀÇ µÇ¾î ÀÖÀ» °æ¿ì ½ºÅ©¸³Æ®¸¦ Á¾·áÇÏ´Â °ÍÀÔ´Ï´Ù. <Âü°í ³¡> |