3. C Shell Program Language

  ÀÌ Àå¿¡¼­´Â C ShellÀÌ °¡Áö°í ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î¼­ÀÇ ±â´É¿¡ ´ëÇÑ ¼³¸í°ú ÀÌ ±â´ÉÀ» »ç¿ëÇÑ Shell ÇÁ·Î±×·¡¹ÖÀÇ ¿¹Á¦¸¦ º¸¿©ÁØ´Ù.

 

3.1 ÁÖ¼® (comment)

  ÁÖ¼®Àº ¶óÀÎÀÇ ¾Õ¿¡ ¡°#¡±·Î ½ÃÀÛÇÑ´Ù. ÁÖ¼®Àº # ÀÌÈĺÎÅÍ ÁÙ ³¡±îÁöÀ̹ǷΠ¸í·ÉÁÙ µÚ¿¡µµ ÁÖ¼®À» µÑ ¼ö ÀÖ´Ù. ±×·¯³ª ScriptÀÇ ¸Ç ù ÁÙ¿¡ "#!"´Â Ưº°ÇÑ Àǹ̸¦ °¡Áö°í Àִµ¥ À̰ÍÀº shellÀÌ script ÆÄÀÏÀ» ½ÇÇàÇÒ ¶§ "#!" µÚ¿¡ ÀÖ´Â ÇÁ·Î±×·¥À» »ç¿ëÇØ¾ß ÇÔÀ» ¸í½ÃÇÏ´Â °ÍÀÌ´Ù. À̰ÍÀ» ÀÌ¿ëÇϸé ÀÚ½ÅÀÌ ÇöÀç »ç¿ëÇϰí ÀÖ´Â Shell°ú ½ÇÇàÇϰíÀÚ ÇÏ´Â Shell scriptÀÇ shellÀÌ ´Þ¶óµµ À̸¦ ¹Ù·Î ½ÇÇàÇÒ ¼ö ÀÖ´Ù.

  ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ´ç½Ã¿¡´Â ÀÌÇØÇϰí ÀÛ¼ºÇÑ ºÎºÐµµ Àå±â°£ ½Ã°£ÀÌ °æ°ú ÈÄ¿¡ º¸¸é ±× ³»¿ëÀ» ÀÌÇØÇÒ ¼ö ¾ø´Â °æ¿ì°¡ ¸¹´Ù. ÀÌ·± °æ¿ì ÇÁ·Î±×·¥ÀÇ Áß°£¿¡ ÀÖ´Â ÁÖ¼® ºÎºÐÀÌ ÇÁ·Î±×·¥ÀÇ ÀÌÇØ¿¡ ¸¹Àº µµ¿òÀ» ÁØ´Ù. ¶ÇÇÑ ´Ù¸¥ »ç¿ëÀÚ°¡ ÇÁ·Î±×·¥À» º¼ ¶§µµ ¸¹Àº µµ¿òÀ» ÁØ´Ù.

 

3.2 º¯¼ö (variable)

  C shellÀº º¯¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖÀ¸¸ç, º¯¼ö¿¡´Â ¼ýÀÚ, ¹®ÀÚ, ¹®ÀÚ¿­À» ÀúÀåÇÒ ¼ö ÀÖ´Ù. Á¤ÀÇµÈ º¯¼ö´Â ´Ù¸¥ º¯¼ö¿¡¼­ ÂüÁ¶ÇÒ ¼ö ÀÖÀ¸¸ç, Çʿ信 ÀÇÇØ Á¤ÀÇµÈ º¯¼ö¸¦ ÇØÁ¦ÇÒ ¼öµµ ÀÖ´Ù.

 

3.2.1 º¯¼ö Á¤ÀÇ (¼³Á¤)

  º¯¼öÀÇ ¼³Á¤Àº ¼³Á¤ÇϰíÀÚ ÇÏ´Â º¯¼ö ¸í°ú °ªÀ» ÁöÁ¤ÇÑ´Ù. º¯¼ö °ªÀº ¼ýÀÚ, ¹®ÀÚ, ¹®ÀÚµéÀÇ ÁýÇÕ µéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

  ÀÏ¹Ý º¯¼ö´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.

  ÁýÇÕ º¯¼ö´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.

(Âü°í)
  »ç¿ëÀÚÀÇ HOME µð·ºÅ丮¿¡ ÀÖ´Â .cshrc ÆÄÀÏÀ» º¸¸é setÀ¸·Î º¯¼ö¸¦ ¼±¾ðÇÑ ºÎºÐ°ú setenv¸¦ »ç¿ëÇÏ¿© º¯¼ö¸¦ ¼±¾ðÇÑ ºÎºÐÀÌ ÀÖ´Ù. setÀº Shell¿¡¼­ ÂüÁ¶ÇÏ´Â º¯¼öµéÀ̰í setenv´Â ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥¼­ ÂüÁ¶ÇÏ´Â º¯¼öÀÌ´Ù.

 

3.2.2 º¯¼ö ÂüÁ¶

  º¯¼öÀÇ ÂüÁ¶´Â º¯¼ö ¸í ¾Õ¿¡ ´Þ·¯($) ±âÈ£¸¦ ºÙÇô »ç¿ëÇÑ´Ù.

  1. ´Üµ¶ º¯¼ö´Â º¯¼ö À̸§ ¾Õ¿¡ "$" ±âÈ£¸¦ ºÙ¿© ÂüÁ¶ÇÑ´Ù.

    $variable_name

  2. ¹è¿­À» °¡Áø º¯¼ö´Â index¸¦ »ç¿ëÇÏ¿© ÂüÁ¶ÇÑ´Ù.

    $variable_name[index]

  - ¸ñ·Ï º¯¼ö(list variable)ÀÎ °æ¿ì ¸ñ·ÏÀÇ °¢ ´Ü¾î¸¦ µ¶¸³ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
  - index´Â ¸ñ·ÏÀÇ À§Ä¡¸¦ ³ªÅ¸³½´Ù. Áï ù ¹øÂ° ¸ñ·ÏÀÌ "1" ÀÌ´Ù.
  - ¸ñ·Ï¿¡ ¾ø´Â index¸¦ ÂüÁ¶ÇÒ °æ¿ì error°¡ ¹ß»ýÇÑ´Ù.

 

3.3.3 º¯¼ö ÇØÁ¦

  ¼±¾ðµÈ º¯¼ö´Â unsetÀ̶ó´Â ¸í·É(ShellÀÇ ³»ºÎ ¸í·É)À» »ç¿ëÇÏ¿© ÇØÁ¦ÇÑ´Ù.

    % unset variable_name

(Âü°í) ¾Õ¿¡¼­ º¯¼öÀÇ ¼±¾ð°ú ÇØÁ¦¸¦ À§ÇØ »ç¿ëÇÑ set, unset °ú shell program¿¡ »ç¿ëÇÏ´Â if, foreach, while, switch ±¸¹®µîµµ shellÀÇ ³»ºÎ ¸í·É¾îµé ÀÌ´Ù.

 

3.2.4 °æ·Î À̸§

  Shell¿¡¼­´Â °æ·Î À̸§ »ó¼úÀÚ¶ó ºÒ¸®´Â ¿É¼ÇÀ» Á¦°øÇϴµ¥, À̸¦ ÅëÇØ º¯¼ö °ª¿¡¼­ °æ·Î¸í, ÀÔ·ÂµÈ program¸í, È®ÀåÀÚ µîÀÇ Æ¯Á¤ÇÑ ºÎºÐÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.

 °æ·Î À̸§ »ó¼úÀÚ(path name specified) : :r, :h, :t, :e

3.2.5 º¯¼ö ¼³Á¤ È®ÀÎ

  C shell ÇÁ·Î±×·¥¿¡¼­´Â ¾î¶² º¯¼ö°¡ Á¤ÀÇ(¼³Á¤)µÇ¾ú´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇϰí ÀÖ´Ù. À̸¦ ÅëÇØ Á¤ÀǵÇÁö ¾ÊÀº º¯¼ö ÂüÁ¶¿¡ ÀÇÇÑ ¹®Á¦¸¦ ¸·À» ¼ö ÀÖ´Ù. (¸¸¾à C ÇÁ·Î±×·¥À̶ó¸é ÄÄÆÄÀϽà ¿¡·¯°¡ Ç¥½ÃµÉ °ÍÀÌ´Ù.)

 

3.2.6 º¯¼ö ³» ´Ü¾î (ÁýÇÕ º¯¼öÀÇ °³¼ö È®ÀÎ)

  ¸ñ·Ï º¯¼ö¿¡ ¸î °³ÀÇ ´Ü¾î°¡ ÀÖ´ÂÁö¸¦ ¾Ë¾Æº¼ ¶§ "$"¿Í º¯¼ö À̸§ »çÀÌ¿¡ "#" À» ³Ö´Â´Ù.

    $#variable_name

 

3.2.7 º¯¼ö ºÐ¸®

  º¯¼ö µÚ¿¡ ¼ýÀÚ³ª ¹®ÀÚ ¶Ç´Â È®ÀåÀÚ¸¦ ºÎÄ¥ °æ¿ì º¯¼ö¸í°ú ÷ºÎ ¹®ÀÚ¿Í È¥¶õÀ» ÁÙ ¼öµµ ÀÖ´Ù. ÀÌ·± °æ¿ì ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

  1. ¹®ÀÚ³ª ¼ýÀÚ·Î ½ÃÀÛÇÏ´Â ´Ù¸¥ ¹®ÀÚ¿­·ÎºÎÅÍ º¯¼ö¸¦ ºÐ¸®ÇÏ·Á¸é "{}"¸¦ »ç¿ëÇÏ¿© ¡°{º¯¼ö}¡±¿Í °°ÀÌ »ç¿ëÇÑ´Ù.

  2. º¯¼ö¸¦ È®½ÇÈ÷ ±¸ºÐÇϰíÀÚ ÇÒ ¶§ »ç¿ëÇÑ´Ù.

    ${variable_name}other_number_or_string

 

3.2.8 º¯¼ö °ª ÀÔ·Â

  C Shell¿¡¼­´Â ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß¿¡ Ç¥ÁØÀÔ·ÂÀ¸·ÎºÎÅÍ °ªÀ» ÀÐÀ» ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.

     echo ¡°Input file is : $filename¡±

 

3.3 ¸Å°³ Àμö (argument)

3.3.1 ¸Å°³ º¯¼ö

  ¸í·ÉÀ» ÀÔ·ÂÀ» ÇÒ ¶§ ½ÇÇàÇϰíÀÚ ÇÏ´Â ¸í·É¿¡ ÇÊ¿äÇÑ Ãß°¡Á¤º¸³ª ½ÇÇà ¹æ¹ý µîÀ» ¸í·É¾î µÚ¿¡ Ãß°¡ÇÒ ¼ö ÀÖ´Ù. ¿©±â¼­ ¸í·É¾î ºÎºÐÀº ¸í·É¾î ÀÚüÀ̸ç, ±× µÚ¿¡ ¿À´Â Ãß°¡ÀûÀÎ ºÎºÐÀ» argument¶ó°í ÇÑ´Ù.

  »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¸í·É¾î ÁÙ(command line)Àº ¸ðµÎ shellº¯¼öÀÎ argv¿¡ ¸ñ·Ï º¯¼ö·Î ÀúÀåµÈ´Ù. Script¿¡¼­´Â argv ¸ñ·Ï º¯¼ö¿¡ ÀúÀåµÈ º¯¼ö °ªÀ» ÂüÁ¶ÇÏ¿© ¸í·ÉÁÙ¿¡¼­ ÀÔ·ÂÇÑ argument¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

  C Shell¿¡¼­ ù ¹øÂ° argument´Â $argv[1]·Î ÂüÁ¶µÈ´Ù. C ÇÁ·Î±×·¥ÀÇ °æ¿ì´Â argv[0] ÀÌ´Ù. C shell¿¡¼­ $argv[0]´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù.

 

3.3.2 ArgumentÂüÁ¶

  ArgumentÀÇ ÂüÁ¶´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù.

  $argvÀ» »ç¿ëÇÏ·Á¸é ÃæºÐÇÑ argument°¡ ÀÖ´ÂÁö ¿©ºÎ(range checking)¸¦ °Ë»çÇÑ´Ù.