4. ÇÁ·Î±×·¥ ÀÛ¼º °¡À̵å

 

4.1 Shell ÇÁ·Î±×·¥ ÀÛ¼º½Ã ÁÖÀÇÁ¡

  ¾Õ¿¡¼­ ¼³¸íÇÑ ³»¿ë Áß¿¡¼­ Shell ProgramÀ» Çϴµ¥ ÀÖ¾î ÁÖÀÇÇÒ »çÇ×µéÀ» µû·Î Á¤¸®ÇÏ¿´´Ù. ¿ì¸®°¡ ÇÁ·Î±×·¥ ¾ð¾îÀÇ ½ÀµæÀ» À§ÇØ ¸¹Àº ÇÁ·Î±×·¥À» ÀÛ¼º, ÄÄÆÄÀÏ, µð¹ö±ë, ½ÇÇàÀ» ÇØ º¸´Â °Íó·³ Shell Programµµ ¸¹ÀÌ ÀÛ¼ºÀ» ÇØº¸´Â °ÍÀÌ Áß¿äÇÏ´Ù.

 

4.1.1 Shell Start

1. C shell ÇÁ·Î±×·¥ÀÇ Ã¹ ÁÙÀÇ Ã¹ ¹øÂ° ¹®ÀÚ´Â ¹Ýµå½Ã #! À̾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é ÀÌ»óÇÏ°Ô µ¿ÀÛÇÑ´Ù.

2. ShellÇÁ·Î±×·¥ ÆÄÀÏÀ» ¸¸µé ¶§ ù ÁÙ¿¡ Ç×»ó #!/bin/cshÀ» ¾²´Â ½À°üÀ» °®´Â´Ù.

C shell : #!/bin/csh
bsh     : #/bin/sh
Pearl   : #!/opt/local/bin/perl

 

4.1.2 Á¦¾î ±¸¹®

(1) if »ç¿ë

1. If~then~else±¸¹®À» »ç¿ëÇÒ ¶§ thenÀº if¿Í °°Àº ÁÙ¿¡ ÀÖ¾î¾ß Çϰí else¿Í endif´Â µû·Î µ¶¸³ÀûÀÎ ÁÙ¿¡ ½á¾ß ÇÑ´Ù.

2. If ±¸¹®ÀÇ µÚ¿¡ ½ÇÇà¸í·ÉÀÌ ¿À¸é(then ¾øÀÌ) ´ÙÀ½ÀÇ endif´Â ÇÊ¿ä¾ø´Ù.

3. if¿Í endif ÀÇ ½ÖÀ» Ç×»ó »ý°¢ÇÑ´Ù.

 

(2) foreach/ while

1. while°ú foreach ±¸¹®ÀÇ ³¡À» Ç¥½ÃÇÏ´Â endµµ µ¶¸³ÀûÀÎ ÁÙ¿¡ end Çϳª¸¸ ½á¾ß ÇÑ´Ù.

2. ÁßøµÈ loop¸¦ »ç¿ëÇÒ °æ¿ì loop ¼ýÀÚ¿Í end ¼ýÀÚ°¡ ÀÏÄ¡ÇÏ´Â Áö¸¦ Ç×»ó »ý°¢ÇÑ´Ù.

 

(3) Break

1. break ¹®Àº foreach ³ª while ¹®ÀÇ °¡Àå ¾ÈÂÊ loop Çϳª¸¸ ¹þ¾î³­´Ù.

2. ÁßøµÈ loop Àüü¸¦ ¹þ¾î³ª´Â °ÍÀÌ ¾Æ´Ï´Ù.

 

(4) Switch

1. switch ¹®¿¡¼­ breaksw ¹®ÀåÀ» ÀØ°í ¾²Áö ¾ÊÀ¸¸é ´ÙÀ½ÀÇbreaksw³ª endsw ±îÁö¸¦ ¸ðµÎ ¼öÇàÇÑ´Ù.

2. °á±¹ switch ¹®ÀÌ ÀǵµÇß´ø ´ë·Î µ¿ÀÛÇÏÁö ¾Ê°í ÀÌ»óÇÏ°Ô µ¿ÀÛÇÑ´Ù.

 

4.1.4 º¯¼ö »ç¿ë

 

(1) Index »ç¿ë

1. ÁýÇÕ º¯¼öÀÇ °æ¿ì indexÀÇ ¹üÀ§¸¦ ¹þ¾î³ª¸é ¾ÊµÈ´Ù.

2. % echo $argv[5]´Â argument°¡ 4°³ ÀÌÇÏÀ̸é error°¡ ¹ß»ýÇÑ´Ù.

3. shift ¹®ÀåÀ» »ç¿ëÇÏ·Á¸é argument°¡ Àû¾îµµ 1°³ ÀÖ¾î¾ß ÇÑ´Ù.

 

(2) º¯¼ö/¹®ÀÚ Ã³¸®

1. º¯¼ö¸¦ È¥µ¿ÇÒ °¡´É¼ºÀÌ ÀÖÀ¸¸é º¯¼ö¸¦ ${var_name}·Î ÇÑ´Ù.

2. ¿¬»êÀÚ¿Í ¹®ÀÚ¿­À» È¥µ¿ÇÒ °¡´É¼ºÀÌ ÀÖÀ¸¸é µû¿ÈÇ¥·Î ¹­´Â´Ù.

if ("$argv[1]" == "-w") then ....

¿©±â¼­ -w´Â shell scriptÀÇ option¿¡ ÀÖ´Â ¹®ÀÚ¿­ÀÏ »Ó ÆÄÀÏÀÌ ¾²±â(write) °¡´ÉÇÑÁö¸¦ ¹¯´Â ¿¬»êÀÚ°¡ ¾Æ´Ï¹Ç·Î µû¿ÈÇ¥·Î ¹­¾ú´Ù.

 

4.1.4 ¼ö½Ä Ç¥Çö

1. %@ num = ($check >> 8)¿¡¼­ @ ´ÙÀ½°ú = ¾ç ¿·¿¡´Â °ø¹éÀ» ³Ö¾î¾ß Çϰí, shift ¿¬»êÀÚ (>>)°¡ ÀÖÀ¸¹Ç·Î ¿À¸¥ÂÊ ½ÄÀº °ýÈ£·Î ¹­¾î¾ß ÇÑ´Ù.

2. ¼ýÀÚ¸¦ ±â¾ïÇÏ·Á¸é ¹Ýµå½Ã @ ¿¬»êÀÚ¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.

3. À߸øµÈ °æ¿ìÀÇ º¸±â

   % set check = 5
   % echo $check
   5 

   % set num = ($check >> 8)    
   % echo $num                  

   # @ ¿¬»êÀÚ¸¦ »ç¿ëÇÏÁö ¾Ê°í set ¸í·ÉÀ» »ç¿ëÇß´Ù
   # µû¶ó¼­ shift(>>) ¿¬»êÀº ½ÇÇàÇÏÁö ¾Ê°í 5 >> 8 ¸¦
   # ÀüºÎ ¹®ÀÚ¿­·Î Ãë±ÞÇß´Ù.

  

4.1.5 ÆÐÅÏ ºñ±³

1. Pattern match ¿¬»êÀÚ(=~ ¿Í !~)¸¦ »ç¿ëÇÒ ¶§ ÀÎ¿ë ºÎÈ£(" ")¸¦ ¾²¸é ¾ÈµÈ´Ù.

2. if ($argv[1] =~ "*.c") then ... ÀÌ °æ¿ì * ¹®ÀÚ¸¦ ÀνÄÇÏÁö ¸øÇÑ´Ù.

3. if ($argv[1] =~ *.c) then .... ÀÌ ¿ÇÀº ¹®ÀåÀÌ´Ù.

 

4.2 Shell ÇÁ·Î±×·¥ ±â¹ý

 

4.2.1 °æ·Î ¼³Á¤

  ÇÁ·Î±×·¥À» ½ÇÇà ÇÒ ¶§ »õ·Î »ý¼ºÇÑ scriptÀ» $path¿¡ ÀÖ´Â µð·ºÅ丮·Î ¼³Ä¡Çߴµ¥µµ ½ÇÇàÀÌ µÇÁö ¾Ê´Â °æ¿ì°¡ ÀÖ´Ù. À̶§´Â shell¿¡°Ô °æ·Î¸¦ »õ·Î Ž»öÇÏ¿© ÆÄÀÏ Å×À̺íÀ» ¸¸µéµµ·Ï ÇÑ´Ù.

»ç¿ë ¸í·ÉÀº rehash¸¦ »ç¿ëÇÑ´Ù.

% rehash <ENTER>

 

4.2.2 Àӽà ÆÄÀÏ

  Process ID¸¦ ÀÌ¿ëÇÏ¿© À¯ÀÏÇÑ À̸§À» °®´Â Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Ù. C shell¿¡¼­ $$ ±âÈ£´Â ÇöÀç ÀڱⰡ ½ÇÇàµÇ°í ÀÖ´Â process ID (PID)¸¦ ³ªÅ¸³»¸ç À̸¦ ÀÌ¿ëÇÏ¿© À¯ÀÏÇÑ À̸§ÀÇ Àӽà ÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Ù.

  À¯ÀÏÇÑ À̸§À» °®´Â Àӽà ÆÄÀÏÀ» ¸¸µå´Â °ü·ÊÀûÀÎ ¹æ¹ýÀº script À̸§°ú PID¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù. $0ÀºscriptÀ̸§À̰í $$´Â script°¡ ½ÇÇàµÉ ¶§ÀÇ process ID À̹ǷΠÀÌ µÑÀ» Á¶ÇÕÇÑ´Ù.

   set tmpfile = /tmp/tmpfiel.$$

1. PID°¡9862 ÀÌ¸é »ý¼ºµÈ Àӽà ÆÄÀÏÀº /tmp/tmpfile.9862 ÀÌ´Ù.
2. ÀÌ scriptÀ» ´Ù½Ã ½ÇÇàÇÑ °æ¿ì, ±× process ID°¡16107ÀÌ¸é µÎ ¹ø ½ÇÇàµÈ scriptÀÌ ¸¸µç Àӽà ÆÄÀÏÀº/tmp/tmpfile.16107ÀÌ µÈ´Ù.

 

4.2.3 µð¹ö±ë (Debugging)

  Shell scriptÀÇ ¿À·ù¸¦ Á¡°ËÇϱâ À§ÇØ script½ÇÇà ½Ã debugging optionÀ» ÁÖ°í script¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Ù. Debugging¿¡ ÁÖ·Î »ç¿ëµÇ´Â option Àº n, v, x °¡ ÀÖÀ¸¸ç, µ¿½Ã¿¡ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.

 

 

4.3 Shell ÇÁ·Î±×·¥ Á¦ÀÛ Àü·«

 

4.3.1 ÇÁ·Î±×·¥ÀÇ Á¦ÀÛ

- ÀÛ¾÷ÀÌ UNIX ¸í·ÉÀ¸·Î ÇØ°áµÉ °æ¿ì c programº¸´Ù´Â scriptÀ» ÀÛ¼ºÇÏ´Â °ÍÀÌ ´õ ÁÁ´Ù.


- ¹®¼­ÀÇ ÁÙ ´ÜÀ§·Î ÀÛ¾÷À» ÇÏ´Â °æ¿ì script°¡ ÃÖÀû°ÝÀε¥, grep, sort, uniq, awkµî ¹®¼­ÀÇ ÁÙ ´ÜÀ§·Î Àû¿ëµÇ´Â unix ¸í·ÉµéÀÌ ¸¹ÀÌ Àֱ⠶§¹®ÀÌ´Ù.

- ÁÖ·Î ¼öÄ¡ ¿¬»êÀ̳ª ¹®ÀÚ µ¥ÀÌÅÍ(character data)¸¦ Ãë±ÞÇÏ´Â ÀÛ¾÷¿¡´Â scriptÀÌ ÀûÀýÇÏÁö ¸øÇÏ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» ÇÏ´Â script¸¦ ¸¸µé ¼ö ÀÖÁö¸¸ ±²ÀåÈ÷ ´À¸®°Ô µ¿ÀÛÇÑ´Ù. ÀÌ °æ¿ì C ÇÁ·Î±×·¥À» ¸¸µé¾î »ç¿ëÇÏ´Â °ÍÀÌ ´õ ÀûÀýÇÏ´Ù.

 

4.3.2 ÇÁ·Î±×·¥ Á¦ÀÛ ¼ø¼­

1. ÁÁÀº script´Â shell user interface¸¦ ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.

2. argument°¡ ¾øÀ¸¸é Ç¥ÁØ ÀԷ¿¡¼­ ÀڷḦ ¹Þ°í, Ç¥ÁØ Ãâ·Â¿¡ ½á¾ß pipe³ª ÀÔ/Ãâ·Â ¹æÇâ Àüȯ(redirection)À» ÇÒ ¼ö ÀÖ´Ù.

3. script°¡ ù ¹øÂ°·Î ÇÒ ÀÏÀº argumentÀÇ ¿Ã¹Ù¸¥ °³¼ö¿Í ±× ÇüŸ¦ °Ë»çÇÏ´Â °ÍÀÌ´Ù.

4. script½ÇÇà ½Ã ¹®Á¦°¡ ÀÖÀ¸¸é À̸¦ »ç¿ëÀÚ¿¡°Ô ¾Ë·Á ÁÙ ¼ö ÀÖµµ·Ï ÀÛ¼ºÇÑ´Ù.

5. ¿¡·¯ ¸Þ½ÃÁö´Â ¿¡·¯¸¦ °ËÃâÇÑ script À̸§À» Æ÷ÇÔÇØ¾ß Çϰí, °¡´ÉÇÏ¸é ¿¡·¯ÀÇ ¿øÀÎÀ» ¾Ë ¼ö ÀÖ°Ô ÇØ¾ß ÇÑ´Ù.

6. Ç¥ÁØ UNIX ¸í·É°ú °°Àº »óÅÂ(status)ÀÇ °ü·Ê¸¦ µû¸£µµ·Ï exit¹®ÀåÀ» »ç¿ëÇÑ´Ù.
   (Á¤»óÁ¾·á : exit 0, ºñ Á¤»óÁ¾·á : 0 ÀÌ ¾Æ´Ñ ´Ù¸¥ °ª(exit 1µî))

7. ½ÇÇà ½Ã°£ ¿¡·¯(run-time error)¸¦ ¹æÁöÇÑ´Ù.

8. Script¿¡ Àӽà ÆÄÀÏÀÌ ÇÊ¿äÇϸé /tmp µð·ºÅ丮¸¦ »ç¿ëÇÑ´Ù.

 

 

4.3.3 È¿À²ÀûÀÎ ÇÁ·Î±×·¥ 

  È¿À²ÀûÀÎ shell ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù´Â °ÍÀº ¿©·¯ °¡Áö ´Ù¸¥ Àǹ̸¦ °®´Â´Ù. ±×·¯³ª ÀϹÝÀûÀ¸·Î ´ÙÀ½ÀÇ »çÇ×À» ÇÇÇÑ´Ù¸é ÁÁÀº shell script¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

 

(1) ÇÁ·Î¼¼½º »ý¼º

  C shellÀº ¿ÜºÎ ¸í·ÉÀ» ½ÇÇàÇÒ ¶§¸¶´Ù »õ·Î¿î ÇÁ·Î¼¼½º¸¦ ¸¸µç´Ù. ±×·¯¹Ç·Î shell¿¡¼­ ¿ÜºÎ ¸í·ÉÀ» »ç¿ëÇÏÁö ¾Êµµ·Ï C shell³»ºÎ ¸í·ÉÀ̳ª ÆÄÀÏ À̸§ È®ÀåÀ» »ç¿ëÇÏ¸é ¿ÜºÎ UNIXÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ º¸´Ù Ç×»ó ÈξÀ ºü¸£°Ô ½ÇÇà½Ãų ¼ö ÀÖ´Ù.

 

(2) °æ·Î °Ë»ö

  shellÀÌ Ã£À» °æ·Î¸íÀ» ÃÖ¼Ò·Î ÇÑ´Ù.

 

 

(3) »ê¼ú ¿¬»ê

  ShellÀº »ê¼ú ¿¬»êÀÌ ´À¸®¹Ç·Î ÁÖ·Î »ê¼ú ¿¬»êÀ» ÇÏ´Â ÇÁ·Î±×·¥À» shell script·Î ÀÛ¼ºÇÏ¸é ¾ÈµÈ´Ù. ÀÌ·¯ÇÑ ÇÁ·Î±×·¥Àº C-language·Î ÀÛ¼ºÇÏ´Â °ÍÀÌ ÈξÀ ºü¸£°Ô µ¿ÀÛÇÑ´Ù. (awk³ª perl°ú °°Àº script¾ð¾îµµ ¾ÆÁÖ ÁÁÀº ´ë¾ÈÀÌ´Ù.)

 

(4) ¹®ÀÚ ¿¬»ê

  »ê¼ú ¿¬»ê°ú ¸¶Âù°¡Áö·Î °¢°¢ÀÇ ¹®ÀÚ¸¦ ´Ù·ç´Â ÇÁ·Î±×·¥µµ C·Î ÀÛ¼ºÇÑ´Ù. Shell º¯¼ö ³»ÀÇ °³º° ¹®ÀÚ¸¦ Á¢±ÙÇÒ ¼ö ÀÖÁö¸¸ ¸Å¿ì ´À¸®°Ô µ¿ÀÛÇÑ´Ù.

 

(5) ºü¸¥ ½ÃÀÛ (fast startup)

   C shellÀÌ script¸¦ ½ÇÇà½Ãų ¶§ ¸ÕÀú ~/.cshrc ÆÄÀÏÀ» ã°í ±×°ÍÀ» ½ÇÇàÇÑ´Ù. ÀÌ·Î ÀÎÇØ script°¡ ½ÇÇàÇÒ subshell¿¡¼­ alias¿Í Á¤ÀÇµÈ º¯¼öµéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ¸¹Àº °æ¿ì, ƯÈ÷ »ç¿ëÀÚ°¡ ÀÛ¼ºÇÑscript¿¡¼­ À̵é alias³ª º¯¼öµéÀº ÇÊ¿äÇÏÁö ¾Ê´Ù. µû¶ó¼­ ÀÌ ´Ü°è (.cshrc¸¦ ½ÇÇàÇÏ´Â ´Ü°è)¸¦ ¾ø¾Ö¸é ½ÃÀÛ ½Ã°£À» ÇöÀúÇÏ°Ô ÁÙÀÏ ¼ö ÀÖ´Ù.

  »ç¿ë ¹æ¹ýÀº cshÀÇ f(fast) optionÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù.

 

(6) ÆÄÀÌÇÁ ¿¬°á

  ¸í·ÉÀ» ÆÄÀÌÇÁ·Î ¿¬°áÇÒ ¶§ ¸í·ÉÀÇ ¼ø¼­¸¦ Àß Á¶ÇÕÇÏ¸é ºü¸£°Ô ½ÇÇà½Ãų ¼ö ÀÖ´Ù.