¸®´ª½º °ü·Ã °­Á¶õ

HomePage Backward Forward Post Reply List
Delete Modify
  Á¦¸ñ   ±âº»ÀûÀÎ 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"·Î Á¤ÀÇ µÇ¾î ÀÖÀ» °æ¿ì ½ºÅ©¸³Æ®¸¦ Á¾·áÇÏ´Â °ÍÀÔ´Ï´Ù.

<Âü°í ³¡>



HomePage Backward Forward Post Reply List
1998 by swindler