¿ø¹®: http://www.linuxnewbie.org/nhf/intel/programming/introbashscript.html
³¯Â¥: ?
ÀúÀÚ: X_console shellscope@yahoo.com
Á¦¸ñ: BASH ½© ½ºÅ©¸³ÆÃ ÀÔ¹®: ¹öÀü 1.2
¸®´ª½º¿¡¼ ¾µ ¼ö ÀÖ´Â ¸ðµç ½©µéó·³, BASH(Bourne Again Shell)Àº
¶Ù¾î³ ¸í·É ¶óÀÎ ½©À̸é¼, ±× ÀÚü·Îµµ ÇϳªÀÇ ½ºÅ©¸³ÆÃ ¾ð¾îÀÌ´Ù. ´ç½ÅÀº ½© ½ºÅ©¸³ÆÃÀ» ÀÌ¿ëÇØ¼ ½©ÀÌ °¡Áø ´É·ÂÀ» ÃæºÐÈ÷ Ȱ¿ëÇÒ ¼ö ÀÖÀ¸¸ç,
½© ½ºÅ©¸³ÆÃÀÌ ¾Æ´Ï¾úÀ¸¸é ¼ö¸¹Àº ¸í·ÉÀ» ÇÊ¿ä·Î ÇßÀ» ¸¹Àº ÀϵéÀ»
ÀÚµ¿ÀûÀ¸·Î ó¸®ÇÒ ¼öµµ ÀÖ´Ù. ´ç½ÅÀÇ ¸®´ª½º ¹Ú½º¿¡ ³õ¿© ÀÖ´Â ¸¹Àº ÇÁ·Î±×·¥µéÀº ½© ½ºÅ©¸³Æ®µéÀÌ´Ù. ¸¸ÀÏ ½© ½ºÅ©¸³Æ®°¡ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö ¹è¿ì°í
½Í°Å³ª ´ç½ÅÀÌ °¡Áö°í ÀÖ´Â ½© ½ºÅ©¸³Æ®¸¦ ¼öÁ¤ÇÏ°í ½Í´Ù¸é, bash ¹®¹ýÀ» ÀÌÇØÇÏ´Â °ÍÀº ÇʼöÀûÀÌ´Ù. °Ô´Ù°¡, bash ¾ð¾î¸¦ ÀÌÇØÇϸé Á¤È®È÷
´ç½ÅÀÌ ¿øÇÏ´Â ¹æ½ÄÀ¸·Î ÀÏÀ» ÇÏ´Â ´ç½Å ÀÚ½ÅÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
ÇÁ·Î±×·¡¹Ö
¶Ç´Â
½ºÅ©¸³ÆÃ?
ÇÁ·Î±×·¡¹ÖÀ» óÀ½ ÇÏ´Â »ç¶÷µéÀº ´ë°³ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ½ºÅ©¸³ÆÃ ¾ð¾î »çÀÌÀÇ Â÷À̸¦ È¥µ¿ÇÑ´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÀϹÝÀûÀ¸·Î ½ºÅ©¸³ÆÃ ¾ð¾î¿¡ ºñÇØ º¸´Ù °·ÂÇÏ°í º¸´Ù ºü¸£´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¿¹·Î´Â C, C++, Java°¡ ÀÖ´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ´ë°³ ¼Ò½º ÄÚµå(ÃÖÁ¾ ÇÁ·Î±×·¥ÀÌ ¾î¶»°Ô ½ÇÇàµÉ °ÍÀΰ¡¿¡ ´ëÇÑ Áö½Ã¹®À» ´ã°í ÀÖ´Â ÅØ½ºÆ® ÆÄÀÏ)¿¡¼ ½ÃÀÛÇØ¼ ÄÄÆÄÀÏ °úÁ¤À» ÅëÇØ ½ÇÇà °¡´É ÆÄÀÏ·Î ¸¸µé¾î Áø´Ù(built). ÀÌ·¸°Ô ÇØ¼ ¸¸µé¾îÁø ½ÇÇà °¡´É ÆÄÀÏÀº ´Ù¸¥ ¿î¿µ üÁ¦·Î ½±°Ô À̽ĵǾîÁöÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î, ´ç½ÅÀÌ ¸®´ª½º¿¡¼ C ÇÁ·Î±×·¥À» ÀÛ¼ºÇß´Ù¸é, Windows 98½Ã½ºÅÛ¿¡¼´Â ±× ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§Çؼ´Â, Windows 98 ½Ã½ºÅÛ ÇÏ¿¡¼ ¼Ò½º Äڵ带 ´Ù½Ã ÄÄÆÄÀÏÇØ¾ß¸¸ ÇÑ´Ù. ½ºÅ©¸³ÆÃ ¾ð¾î ¿ª½Ã ¼Ò½º Äڵ忡¼ ½ÃÀÛÀ» ÇÏÁö¸¸, ½ÇÇà °¡´É ÆÄÀÏ·Î ¸¸µé±â À§ÇÑ ÄÄÆÄÀÏ °úÁ¤ÀÌ ¾ø´Ù. ´ë½Å, ¹ø¿ª±â(interpreter)°¡ ¼Ò½º ÆÄÀÏ¿¡¼ Áö½Ã¹®À» ÀÐ°í °¢ Áö½Ã¹®À» ½ÇÇà½ÃŲ´Ù. ºÒÇàÈ÷µµ, ¹ø¿ª±â°¡ °¢ Áö½Ã¹®À» Çϳª Çϳª Àоî¾ß¸¸ Çϱ⠶§¹®¿¡, ÀϹÝÀûÀ¸·Î ¹ø¿ª±â¸¦ ÅëÇØ ½ÇÇàµÇ´Â ÇÁ·Î±×·¥Àº ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥º¸´Ù ´À¸®´Ù. ½ºÅ©¸³ÆÃ ¾ð¾îÀÇ °¡Àå Å« ÀåÁ¡Àº ¼Ò½º ÆÄÀÏÀ» ¾î¶² ¿î¿µ üÁ¦¿¡³ª ½±°Ô À̽ÄÇÒ ¼ö ÀÖÀ¸¸ç ¹Ù·Î ±× ÀÚ¸®¿¡¼ ¹ø¿ª±â¸¦ ÅëÇØ ½ÇÇàÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÌ·± Á¡Àº ÀÛÀº ÇÁ·Î±×·¥¿¡¼´Â ÀåÁ¡À¸·Î ¿©°ÜÁú ¼ö ÀÖÁö¸¸, Å« ±Ô¸ðÀÇ ¾îÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ °ÍÀ» °èȹÇϰí ÀÖ´Ù¸é ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ¾Ë¸Â´Ù. ½ºÅ©¸³ÆÃ ¾ð¾îÀÇ ¿¹·Î´Â Perl, Lisp, TclÀÌ ÀÖ´Ù.
¹«¾ùÀ»
¾Ë¾Æ¾ß
Çϴ°¡?
´ç½Å ÀÚ½ÅÀÇ ½© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇϱâ À§Çؼ´Â ¸ÅÀÏ »ç¿ëÇÏ´Â ±âº»ÀûÀÎ ¸®´ª½º ¸í·É¾î¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é, ¾î¶»°Ô ÆÄÀÏÀ» º¹»ç, À̵¿ÇÏ°í »õ·Î¿î ÆÄÀÏÀ» ¸¸µå´ÂÁö ÇÏ´Â °ÍµéÀ» ¾Ë¾Æ¾ß¸¸ ÇÑ´Ù. ¹Ýµå½Ã ¾Ë¾ÆµÎ¾î¾ß ÇÒ ¶Ç ÇÑ °¡Áö´Â ÅØ½ºÆ® ÆíÁý±â¸¦ ¾²´Â ¹æ¹ýÀÌ´Ù. ¸®´ª½ºÀÇ ´ëÇ¥ÀûÀÎ ¼¼ °¡Áö ÅØ½ºÆ® ÆíÁý±â´Â vi, emacs, picoÀÌ´Ù. ¸¸ÀÏ vi³ª emacs¸¦ »ç¿ëÇϴµ¥ Àͼ÷ÇÏÁö ¾Ê´Ù¸é, pico³ª »ç¿ëÇϱ⠽¬¿î ´Ù¸¥ ÅØ½ºÆ® ÆíÁý±â¸¦ ÀÌ¿ëÇ϶ó.
ÁÖÀÇ!!!
·çÆ® »ç¿ëÀÚÀÎ »óÅ¿¡¼´Â Àý´ë·Î ½ºÅ©¸³ÆÃÀ» ¿¬½ÀÇÏÁö ¾Êµµ·Ï Ç϶ó! ¾î¶² ÀÏÀÌ ÀϾ Áö ¸ð¸¥´Ù. ¸¸ÀÏ ´ç½ÅÀÌ ÄÚµùÀ» ÇÏ´Â µµÁß ¿ì¿¬È÷ ½Ç¼ö¸¦ ÇØ¼ ½Ã½ºÅÛÀ» ¸ÁÃÆ´Ù ÇØµµ ³ª´Â Ã¥ÀÓÁú ¼ö ¾ø´Ù. ·çÆ® ±ÇÇÑÀÌ ¾ø´Â ÀÏ¹Ý »ç¿ëÀÚ °èÁ¤À» »ç¿ëÇ϶ó. ´ç½ÅÀº ½ºÅ©¸³ÆÃ ¿¬½ÀÀ» Çϱâ À§ÇÑ »õ·Î¿î »ç¿ëÀÚ¸¦ ¸¸µé±â¸¦ ¿øÇÒ Áöµµ ¸ð¸¥´Ù. ÀÌ °æ¿ì, ÀϾ ¼ö ÀÖ´Â °¡Àå ³ª»Û ÀÏÀº »õ·Î ¸¸µç »ç¿ëÀÚ µð·ºÅ丮°¡ ¾ø¾îÁö´Â °Í¿¡ ºÒ°úÇÏ´Ù.
ù¹øÂ°
BASH ÇÁ·Î±×·¥
¿ì¸®ÀÇ Ã¹¹øÂ° ÇÁ·Î±×·¥Àº °íÀüÀûÀÎ "Hello World" ÇÁ·Î±×·¥ÀÌ µÉ °ÍÀÌ´Ù. ¸¸ÀÏ ´ç½ÅÀÌ ÀÌÀü¿¡ ÇÁ·Î±×·¥À» ÇØº» °æÇèÀÌ ÀÖ´Ù¸é, Áö±Ý±îÁö ¼ö¸¹Àº "Hello World" ÇÁ·Î±×·¥À» ºÁ¿ÔÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸, À̰ÍÀº ÀüÅëÀ̰í, ´©°¡ ±× ÀüÅëÀ» ¹Ù²Ù°Ú´Â°¡? ÀÌ "Hello World" ÇÁ·Î±×·¥Àº ´Ü¼øÈ÷ "Hello World"¶õ ¹®±¸¸¦ ȸ鿡 ÇÁ¸°Æ®ÇÏ´Â °ÍÀÌ´Ù. ±×·³ ¿ì¼± ÅØ½ºÆ® ÆíÁý±â¸¦ ½ÃÀÛÇØ¼, ±× ¾È¿¡ ´ÙÀ½ÀÇ ³»¿ëÀ» ÀÔ·ÂÇ϶ó:
#!/bin/bash
echo "Hello World"
ù¹øÂ° ¶óÀÎÀº ¸®´ª½º¿¡°Ô ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϱâ À§Çؼ bash ¹ø¿ª±â¸¦ »ç¿ëÇ϶ó°í ¾Ë·ÁÁØ´Ù. ÀÌ °æ¿ì¿¡´Â, bash´Â /bin µð·ºÅ丮¿¡ ÀÖ´Ù. ¸¸ÀÏ bash°¡ ½Ã½ºÅÛÀÇ ´Ù¸¥ µð·ºÅ丮¿¡ ÀÖ´Ù¸é, ±× À§Ä¡¸¦ ù¹øÂ° ¶óÀο¡ ½áÁÖ¾î¶ó. ½ºÅ©¸³Æ® ¾È¿¡ ÀÖ´Â Áö½Ã¹®À» ½ÇÇàÇÒ ¶§ ¾î¶² ÀÎÅÍÇÁ¸®Å͸¦ »ç¿ëÇÒ °ÍÀÎÁö ¸®´ª½º¿¡°Ô ¾Ë·ÁÁÖ´Â °ÍÀ̹ǷΠ¹ø¿ª±â¸¦ Á¤È®ÇÏ°Ô ¸í½ÃÇÏ´Â °ÍÀº ¸Å¿ì Áß¿äÇÏ´Ù. ´ÙÀ½¿£ ½ºÅ©¸³Æ®¸¦ hello.sh¶õ À̸§À¸·Î ÀúÀåÇÏÀÚ. ¸ðµÎ ´Ù µÇ¾úÀ¸¸é, ½ºÅ©¸³Æ®¸¦ ½ÇÇà °¡´ÉÇϵµ·Ï ÇÑ´Ù:
xconsole$ chmod 700 ./hello.sh
ÆÄÀÏÀÇ ÆÛ¹Ì¼ÇÀ» ¾î¶»°Ô ¹Ù²Ù´ÂÁö ¸ð¸¥´Ù¸é chmod¿¡ ´ëÇÑ ¸Å´º¾ó ÆäÀÌÁö¸¦ ÂüÁ¶Ç϶ó. ÀÏ´Ü À§ÀÇ ¸í·ÉÀ» ½ÇÇàÇÏ¸é ´ÜÁö ÆÄÀÏ À̸§À» ŸÀÌÇÎÇÏ´Â °Í¸¸À¸·Î ´ç½ÅÀÇ ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ÀÖ´Ù:
xconsole$ ./hello.sh
Hello
World
µÆ´Ù!
´ç½ÅÀÇ Ã¹¹øÂ° ÇÁ·Î±×·¥ÀÌ´Ù! ±× ÀÚü·Î´Â Áö·çÇÏ°í ¾µ¸ð¾øÁö¸¸, ¸ðµç »ç¶÷ÀÌ ÀÌ·± ½ÄÀ¸·Î ÇÁ·Î±×·¡¹ÖÀ» ½ÃÀÛÇÑ´Ù. ù¹øÂ° ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ±îÁöÀÇ °úÁ¤À» µÇ»õ°Ü º¸ÀÚ. Äڵ带 ÀÛ¼ºÇϰí, ÆÄÀÏÀ» ÀúÀåÇϰí, chmod ¸í·ÉÀ¸·Î ½ÇÇà °¡´ÉÇϵµ·Ï ¸¸µé¾ú´Ù.
¸í·Éµé,
¸í·Éµé,
¸í·Éµé
´ç½ÅÀÇ Ã¹¹øÂ° ÇÁ·Î±×·¥ÀÌ ÇÑ ÀÏÀº Á¤È®È÷ ¹«¾ùÀΰ¡? ±× ÇÁ·Î±×·¥Àº ȸ鿡 "Hello
World"¶õ ¹®±¸¸¦ ÇÁ¸°Æ®Çß´Ù. ÇÏÁö¸¸ ¾î¶»°Ô ±×·¸°Ô ÇÑ °ÍÀϱî? ÇÁ·Î±×·¥Àº ¸í·ÉÀ» »ç¿ëÇß´Ù. ÇÁ·Î±×·¥ »ó¿¡¼ ´ç½ÅÀÌ ½è´ø µü ÇÑ ÁÙÀÇ ÄÚµå´Â echo "Hello
World"¿´´Ù. ±×·¸´Ù¸é, ¾î¶² °ÍÀÌ ¸í·ÉÀΰ¡? ¹Ù·Î echoÀÌ´Ù. echo ÇÁ·Î±×·¥Àº ÇϳªÀÇ ÀÎÀÚ¸¦ ÃëÇØ¼ ±× ÀÎÀÚ¸¦ ȸ鿡 ÇÁ¸°Æ®ÇÑ´Ù.
ÀÎÀÚ(argument)´Â ÇÁ·Î±×·¥ À̸§À» ÀÔ·ÂÇÑ ´ÙÀ½¿¡ µû¶ó¿Â´Ù. ù¹øÂ° ¿¹Á¦¿¡¼ ´ç½ÅÀÌecho¿¡ ³Ñ°Ü ÁØ ÀÎÀÚ´Â "Hello World"ÀÌ´Ù. ´ç½ÅÀÌ ls /home/root¶õ ¸í·ÉÀ» ÀÔ·ÂÇÒ ¶§, ls¿¡ ´ëÇÑ ÀÎÀÚ´Â /home/rootÀÌ´Ù. ±×·¸´Ù¸é ÀÌ ¸ðµç °ÍÀÌ ¶æÇÏ´Â °ÍÀº ¹«¾ùÀΰ¡? ¸¸ÀÏ ´ç½ÅÀÌ ÀÎÀÚ Çϳª¸¦ ÃëÇØ¼ ȸ鿡 ÇÁ¸°Æ®ÇÏ´Â ÇÁ·Î±×·¥À» °¡Áö°í ÀÖ´Ù¸é, ±× ÇÁ·Î±×·¥ ´ë½Å¿¡ echo¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ¿ì¸®°¡ foo¶ó°í ÇÏ´Â ÇÁ·Î±×·¥À» °¡Áö°í ÀÖ´Ù°í °¡Á¤ÇÏÀÚ. ÀÌ ÇÁ·Î±×·¥Àº ¹®ÀÚ¿ Çϳª¸¦ ÀÎÀÚ·Î °¡Á®¼ ȸ鿡 Ãâ·ÂÇÑ´Ù. ¿ì¸®´Â À§ÀÇ ¿¹Á¦¸¦ ´ÙÀ½°ú °°ÀÌ ´Ù½Ã ¾µ ¼ö ÀÖ´Ù:
#!/bin/bash
foo "Hello World"
ÀÌ ³»¿ëÀ» ÀúÀåÇϰí chmod ·Î ½ÇÇà °¡´ÉÇϵµ·Ï ÇÏ¿© ½ÇÇàÇÏÀÚ:
xconsole$ ./hello
Hello
World
°á°ú´Â Á¤È®ÇÏ°Ô ¶È°°´Ù. ÇÁ·Î±×·¥ À̸§À» Á¦¿ÜÇÏ°í ¾î´À ÇÑ °÷ÀÌ¶óµµ ´Ù¸¥ °÷ÀÌ Àִ°¡? ÀüÇô ¾ø´Ù. ½ÇÁ¦·Î ¹«¾ùÀΰ¡ ÀÛ¼ºÇÑ °ÍÀÌ Àִ°¡? ´ç½ÅÀÌ echo ÇÁ·Î±×·¥À» ÀÛ¼ºÇß´Ù¸é ¸ð¸£Áö¸¸ ±×·¸Áö ¾Ê´Ù¸é ÀüÇô ÀÛ¼ºÇÑ °ÍÀÌ ¾ø´Ù. ´ç½ÅÀÌ ÇÑ °ÍÀ̶ó°í´Â ÀÌ¹Ì ÁÖ¾îÁø ÀÎÀÚ¿Í ÇÔ²² echo ÇÁ·Î±×·¥À» ´ç½ÅÀÇ ½© ÇÁ·Î±×·¥¿¡ »ç¿ëÇÑ °Í »ÓÀÌ´Ù. ½ÇÁ¦·Î echo ¸í·É ´ë½Å ¾µ ¼ö ÀÖ´Â ¸í·ÉÀº printf °¡ ÀÖ´Ù. ƯÈ÷ C ÇÁ·Î±×·¡¹Ö¿¡ ´ÉÇÑ »ç¶÷ÀÇ °æ¿ì¿¡´ÂprintfÀÇ ¿©·¯ ±â´ÉÀ» ÀÌ¿ëÇØ¼ º¸´Ù ´Ù¾çÇÑ °á°ú¸¦ ³¾ ¼ö ÀÖ´Ù. »ç½Ç, ½© ÇÁ·Î±×·¥À» ¸¸µéÁö ¾Ê°íµµ À§ÀÇ ¿¹Á¦¿Í ²À °°Àº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù:
xconsole$ echo "Hello World"
Hello
World
bash ½© ½ºÅ©¸³ÆÃÀº ´Ù¾çÇÑ Á¦¾î¸¦ °¡´ÉÇÏ°Ô ÇÏ¸ç ¶ÇÇÑ ¹è¿ì±â ½±´Ù. ¹æ±Ý º¸¾ÒµíÀÌ, ½© ÇÁ·Î±×·¥¿¡ ¸®´ª½º ¸í·ÉÀ»