Unix/Solaris °ü·Ã°Ô½ÃÆÇ

2001/08/11(22:57) from 210.117.182.252
ÀÛ¼ºÀÚ : °­ÁÙ±â (jkkang65@hanmail.net) Á¶È¸¼ö : 2611 , ÁÙ¼ö : 648
½© ÇÁ·Î±×·¡¹Ö °­ÁÂ
Âü°í¼­Àû :  Ãʺ¸ÀÚ¿ë ¸®´ª½º ÇÁ·Î±×·¡¹Ö
           ( ´ë¸²ÃâÆÇ»ç, Çѵ¿ÈÆ,À̸¸¿ë¿ª, NEIL MATTHEW, RICHARD STONES Àú )

¡Ø ³ÝÃ÷°í ¸®´ª½º µ¿È£È¸ 7¿ù Á¦ 5ȸ Á¤±â °ø°³°­Á ÀÚ·á
±Û¾´ÀÌ : À§°æ¼· ( powerhack@netsgo.com )

1. º¯¼ö
 . ½©º¯¼ö´Â óÀ½ »ç¿ëµÉ¶§ ¸¸µé¾îÁø´Ù. Áï ¹Ì¸® ¼±¾ðÇÒ ÇÊ¿ä°¡ ¾ø´Ù.
 . ½©º¯¼ö´Â À¯´Ð½º ¸í·É°ú ¸¶Âù°¡Áö·Î ´ë¼Ò¹®ÀÚ¿¡ ±¸º°ÀÌ ÀÖ´Ù.
 . ½©º¯¼ö´Â ±âº»ÀûÀ¸·Î µ¥ÀÌÅ͸¦ ¹®ÀÚ¿­·Î ÀúÀåÇÑ´Ù. ¼öÄ¡¸¦ ´ëÀÔÇصµ ½ÇÁ¦ ¼öÄ¡
   °¡ ¾Æ´Ñ ¹®ÀÚ¿­ÀÌ ÀúÀåµÈ´Ù. °è»êÀÌ ÇÊ¿äÇÒ °æ¿ì´Â ÀÚµ¿À¸·Î ¼öÄ¡·Î º¯È¯ÇÏ¿©
   °è»êÈÄ ´Ù½Ã ¹®ÀÚ¿­·ÎÀúÀåµÈ´Ù.
 . ½©º¯¼öÀÇ °ªÀ» »ç¿ëÇÒ ¶§´Â º¯¼ö¸í¾Õ¿¡ "$" ¸¦ ºÙ¿©¼­ »ç¿ëÇÑ´Ù.
 . ½©º¯¼ö¿¡ °ªÀ» ´ëÀÔÇÒ¶§´Â "$"¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù.
 . ½©º¯¼ö´Â ŸÀÔÀÌ ¾ø´Ù. Áï ¾Æ¹« °ªÀ̳ª ´Ù ³ÖÀ» ¼ö ÀÖ´Ù.

1.1 ȯ°æº¯¼ö
 ½©À» ±âµ¿ÇÏ°í³ª¸é ±âº»ÀûÀ¸·Î ¼ÂÆõǾîÀÖ´Â º¯¼öµéÀÌ´Ù. À¯´Ð½º/¸®´ª½º¿¡´Â ¸¹Àº
 È¯°æº¯¼öµéÀÌ ÀÖ°í ÇÊ¿äÇÑ°æ¿ì ÀÌ º¯¼öµéÀ» ¸¶Ä¡ ÀϹݺ¯¼öó·³ °ªÀ» ¾ò¾î¿À°Å³ª ¼Â
 ÆÃÇÒ ¼ö ÀÖ´Ù. ¿©±â¼­´Â ½©°ú Á÷Á¢ÀûÀÎ °ü·ÃÀÌ Àִ°͸¸ ¼³¸íÇÑ´Ù.

 $0 - ½ÇÇàµÈ ½© ½ºÅ©¸³Æ® À̸§
 $# - ½ºÅ©¸³Æ®¿¡ ³Ñ°ÜÁø ÀÎÀÚÀÇ °¹¼ö
 $$ - ½© ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º ID

1.2 ÀÎÀÚ º¯¼ö
 ½©½ºÅ©¸³Æ®¿¡ ÀÎÀÚ¸¦ ³Ñ°ÜÁÙ¶§ ±× ÀÎÀڵ鿡 ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â º¯¼öµé.

 $1~ $nnn  : ³Ñ°ÜÁø ÀÎÀÚµé
 $*        : ½ºÅ©¸³Æ®¿¡ Àü´ÞµÈ ÀÎÀÚµéÀ» ¸ð¾Æ³õÀº ¹®ÀÚ¿­. ÇϳªÀÇ º¯¼ö¿¡ ÀúÀåµÇ¸ç
             IFS ȯ°æº¯¼öÀÇ Ã¹¹ø° ¹®ÀÚ·Î ±¸ºÐµÈ´Ù.
 $@        : $*°ú °°´Ù. ´Ù¸¸ ±¸ºÐÀÚ°¡ IFSº¯¼öÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â´Ù.

1.3 ÀϹݺ¯¼ö
 ÀϹݺ¯¼ö¿¡ Ưº°ÇÑ Á¦¾àÀº ¾ø´Ù. ´Ü ´ë¼Ò¹®ÀÚ ±¸ºÐ¸¸ Á¤È®ÇÏ°Ô ÇØÁÖ¸é µÈ´Ù.

 ¿¹Á¦ )

 #!/bin/sh
 echo "This Script Executable File : $0"
 echo "Argument Count : $#"
 echo "Process ID : $$"
 echo "Argument List \$* : $*"
 echo "Argument List \$@ : $@"
 echo "Argument 1 : $1"
 echo "Argument 2 : $2"
 echo "Argument 3 : $3"
 echo "Argument 4 : $4"
 
 ½ÇÇà )
 $chmod 755 test1
 $./test1 a1 a2 a3 a4
 This Script Executable File : ./test1
 Argument Count : 4
 Process ID : 905
 Argument List $* : a1 a2 a3 a4
 Argument List $@ : a1 a2 a3 a4
 Argument 1 : a1
 Argument 2 : a2
 Argument 3 : a3
 Argument 4 : a4

1.4 ¿¬»ê
 º¯¼öÀÇ »ê¼ú¿¬»êÀº »ý°¢ÇÏ´Â°Í Ã³·³ ½±Áö¾Ê´Ù. À§¿¡¼­ ¾ð±ÞÇßµíÀÌ º¯¼ö¿¡´Â ¸ðµç°Í
 ÀÌ ¹®ÀÚ¿­·Î ÀúÀåµÇ±â ¶§¹®¿¡ ¿¬»êÀÌ ºÒ°¡´ÉÇÏ´Ù. ¿¬»êÀ» À§Çؼ­´Â Á» º¹ÀâÇÑ ÀýÂ÷
 ¸¦ °ÅÃÄ¾ß ÇÑ´Ù.

 º¯¼ö = $((»ê¼ú½Ä))

 ÀÌ°ÍÀÌ °¡Àå ´Ü¼øÇÑ ¿¬»ê ±ÔÄ¢ÀÌ´Ù. »ê¼ú½Ä³»¿¡´Â º¯¼ö( $1, $a ¿Í °°Àº ) µµ µé¾î
 °¥ ¼ö ÀÖ´Ù. »ê¼ú½Ä ³»¿¡ ¼ýÀÚ°¡ ¾Æ´Ñ ¹®ÀÚ¿­, ¶Ç´Â ¹®ÀÚ¿­ÀÌ ´ã°ÜÀÖ´Â º¯¼ö°¡ µé¾î
 °¡¸é ±×°ÍµéÀº °è»ê¿¡¼­ Á¦¿ÜµÈ´Ù.
 (Á¤È®È÷ ¸»Çϸé 0 À¸·Î °£ÁÖµÇ¾î ¿¬»êÀÌ ÀÌ·ç¾î ÁöÁö ¾Ê´Â´Ù.)

1.5 ¸Å°³º¯¼ö È®Àå
 ¸Å°³º¯¼ö È®ÀåÀ̶õ º¯¼öÀÇ °ªÀ» ¹®ÀÚ¿­µîÀ¸·Î ´ëüÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù. ´Ü¼øÇÑ ´ëü»Ó
 ¾Æ´Ï¶ó º¯¼ö³»ÀÇ ¹®ÀÚ¿­À» Á¶ÀÛÇÏ¿© ¿øÇÏ´Â ¹®ÀÚ¿­¸¸À» ÃßÃâÇÒ ¼öµµ ÀÖ´Ù.

 Çü½Ä
 ${parm:-default} : parmÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é default·Î ´ëüµÈ´Ù.
 ${#parm}          : parmÀÇ ±æÀ̸¦ ÂüÁ¶ÇÑ´Ù.(°¡Á®¿Â´Ù)
 ${parm%word}      : ³¡¿¡¼­ºÎÅÍ word¿Í ÀÏÄ¡ÇÏ´Â parmÀÇ ÃּҺκÐ(ù¹ø° ÀÏÄ¡) À»
                     Á¦°ÅÇÏ°í ³ª¸ÓÁö¸¦ ¹ÝȯÇÑ´Ù.
 ${parm%%word}     : ³¡¿¡¼­ºÎÅÍ word¿Í ÀÏÄ¡ÇÏ´Â parmÀÇ ÃÖ´ëºÎºÐ(¸¶Áö¸· ÀÏÄ¡) À»
                     Á¦°ÅÇÏ°í ³ª¸ÓÁö¸¦ ¹ÝȯÇÑ´Ù.
 ${parm#word}      : óÀ½ºÎÅÍ word¿Í ¸Â´Â parmÀÇ ÃּҺκÐ(ù¹ø° ÀÏÄ¡)À» Á¦°ÅÇÏ
                     °í ³ª¸ÓÁö ºÎºÐÀ» ¹ÝȯÇÑ´Ù.
 ${parm##word}     : óÀ½ºÎÅÍ word¿Í ¸Â´Â parmÀÇ ÃÖ´ëºÎºÐ(¸¶Áö¸· ÀÏÄ¡)À» Á¦°ÅÇÏ
                     °í ³ª¸ÓÁö¸¦ ¹ÝȯÇÑ´Ù.

 * word¿¡´Â ¿ÍÀϵå Ä«µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

 ¿¹¸¦ º¸ÀÚ.
 
 1 #!/bin/sh
 2
 3 p="/usr/X11R6/bin/startx"
 4
 5 unset p
 6 a=${p:-"Variable p Not found"}
 7 echo $a
 8
 9 p="/usr/X11R6/bin/startx"
 10 a=${p:-"Variable parm Not found"}
 11 echo $a
 12
 13 a=${#p}
 14 echo $a
 15
 16 a=${p%/*}
 17 echo $a
 18
 19 a=${p%%/*}
 20 echo $a
 21
 22 a=${p#*/}
 23 echo $a
 24
 25 a=${p##*/}
 26 echo $a
 27                    

 À§ ½ºÅ©¸³Æ®ÀÇ °á°ú´Â ´ÙÀ½°ú °°´Ù.
 ---------------------------------
 Variable p Not found
 /usr/X11R6/bin/startx
 21
 /usr/X11R6/bin
 
 usr/X11R6/bin/startx
 startx              
 ----------------------------------
  6Çà : º¯¼ö p °¡ Á¦°Å µÇ¾úÀ¸¹Ç·Î "Variable p Not found" °¡ a¿¡ µé¾î°£´Ù.
 10Çà : º¯¼ö p °¡ ÀÖÀ¸¹Ç·Î ±×´ë·Î a¿¡ µé¾î°£´Ù.
 13Çà : a¿¡´Â º¯¼ö pÀÇ ±æÀÌ°¡ µé¾î°£´Ù.
 16Çà : p ¿¡¼­ °¡Àå ¿À¸¥ÂÊÀÇ "/"ºÎÅÍ ³¡±îÁö Áö¿ì°í ³ª¸ÓÁö¸¦ a¿¡ ³Ö´Â´Ù.
 19Çà : p ¿¡¼­ °¡Àå ¿ÞÂÊÀÇ "/" ºÎÅÍ ³¡±îÁö Áö¿ì°í ³ª¸ÓÁö¸¦ a¿¡ ³Ö´Â´Ù.
        (¾Æ¹«°Íµµ ¾ø´Ù)
 22Çà : p ÀÇ Ã³À½ºÎÅÍ °¡Àå¿ÞÂÊÀÇ "/" ±îÁö Áö¿ì°í ³ª¸ÓÁö¸¦ a¿¡ ³Ö´Â´Ù.
 25Çà : p ÀÇ Ã³À½ºÎÅÍ °¡Àå ¿À¸¥ÂÊÀÇ "/"±îÁö Áö¿ì°í ³ª¸ÓÁö¸¦ a¿¡ ³Ö´Â´Ù.

2. Á¶°Ç ÆÇ´Ü
 ½© ½ºÅ©¸³Æ®¿¡¼­ Á¶°ÇÆÇ´ÜÀº if ¿Í test ¸í·ÉÀ» È¥ÇÕÇÏ¿© »ç¿ëÇÑ´Ù.
 ÀϹÝÀûÀÎ ¿¹´Â ´ÙÀ½°ú °°´Ù.

 if test -f test1
 then
  ...
 fi
 
 -f ´Â ÁÖ¾îÁø ÀÎÀÚ°¡ ÀϹÝÆÄÀÏ À϶§ ÂüÀ̵ȴÙ.
 
 
 test ¸í·ÉÀº  [] ·Î ´ëüµÉ ¼ö ÀÖ´Ù.
 
 if [ -f test1 ]
 then
  ...
 fi
 
 -----------------------------
 
 if [ -f test1 ]; then
  ...
 fi

 2.1 test ¸í·É
 
 test ¸í·ÉÀÇ Á¶°ÇÀº ´ÙÀ½°ú °°ÀÌ ¼¼ ºÎ·ù·Î ³ª´©¾îÁø´Ù.

 ¹®ÀÚ¿­ºñ±³
   [ string ]             : stringÀÌ ºó ¹®ÀÚ¿­ÀÌ ¾Æ´Ï¶ó¸é Âü
   [ string1 = string2 ]  : µÎ ¹®ÀÚ¿­ÀÌ °°´Ù¸é Âü
   [ string1 != string2 ] : µÎ ¹®ÀÚ¿­ÀÌ ´Ù¸£¸é Âü
   [ -n string ]          : ¹®ÀÚ¿­ÀÌ null(ºó ¹®ÀÚ¿­) ÀÌ ¾Æ´Ï¶ó¸é Âü
   [ -z string ]          : ¹®ÀÚ¿­ÀÌ null(ºó ¹®ÀÚ¿­) À̶ó¸é Âü

 »ê¼úºñ±³
   [ expr1 -eq expr2 ] : µÎ Ç¥Çö½Ä °ªÀÌ °°´Ù¸é Âü ( EQual )
   [ expr1 -ne expr2 ] : µÎ Ç¥Çö½Ä °©ÀÌ °°Áö ¾Ê´Ù¸é Âü ( Not Equal )
   [ expr1 -gt expr2 ] : expr1 > expr2 À̸é Âü ( Greater Then )
   [ expr1 -ge expr2 ] : expr1 >= expr2 À̸é Âü ( Greater Equal )
   [ expr1 -lt expr2 ] : expr1 < expr2 À̸é Âü ( Less Then )
   [ expr1 -le expr2 ] : expr1 <= expr2 À̸é Âü ( Less Equal )
   [ ! expr ]          : expr ÀÌ ÂüÀÌ¸é °ÅÁþ, °ÅÁþÀ̸é Âü
   [ expr1 -a expr2 ]  : expr1 AND expr2 ÀÇ °á°ú ( µÑ´Ù ÂüÀ̸é Âü )
   [ expr1 -o expr2 ]  : expr1 OR expr2 ÀÇ °á°ú ( µÑÁß Çϳª¸¸ ÂüÀ̸é Âü )

 ÆÄÀÏÁ¶°Ç

   [ -b FILE ]           : FILE ÀÌ ºí·° µð¹ÙÀ̽º À̸é Âü
   [ -c FILE ]           : FILE ÀÌ ¹®ÀÚ µð¹ÙÀ̽º À̸é Âü.
   [ -d FILE ]           : FILE ÀÌ µð·ºÅ丮À̸é Âü
   [ -e FILE ]           : FILE ÀÌ Á¸ÀçÇϸé Âü
   [ -f FILE ]           : FILE ÀÌ Á¸ÀçÇÏ°í Á¤±ÔÆÄÀÏÀ̸é Âü
   [ -g FILE ]           : FILE ÀÌ set-group-id ÆÄÀÏÀ̸é Âü
   [ -h FILE ]           : FILE ÀÌ ½Éº¼¸¯ ¸µÅ©À̸é Âü
   [ -L FILE ]           : FILE ÀÌ ½Éº¼¸¯ ¸µÅ©À̸é Âü
   [ -k FILE ]           : FILE ÀÌ Sticky bit °¡ ¼ÂÆõǾî ÀÖÀ¸¸é Âü
   [ -p FILE ]           : True if file is a named pipe.
   [ -r FILE ]           : ÇöÀç »ç¿ëÀÚ°¡ ÀÐÀ» ¼ö ÀÖ´Â ÆÄÀÏÀ̸é Âü
   [ -s FILE ]           : ÆÄÀÏÀÌ ºñ¾îÀÖÁö ¾ÊÀ¸¸é Âü
   [ -S FILE ]           : ¼ÒÄÏ µð¹ÙÀ̽ºÀ̸é Âü
   [ -t FD   ]           : FD °¡ ¿­·ÁÁø Å͹̳ÎÀ̸é Âü
   [ -u FILE ]           : FILE ÀÌ set-user-id ÆÄÀÏÀ̸é Âü
   [ -w FILE ]           : ÇöÀç »ç¿ëÀÚ°¡ ¾µ ¼ö ÀÖ´Â ÆÄÀÏ(writable file) À̸é Âü
   [ -x FILE ]           : ÇöÀç»ç¿ëÀÚ°¡ ½ÇÇàÇÒ ¼ö ÀÖ´Â ÆÄÀÏ(Executable file) À̸é Âü
   [ -O FILE ]           : FILE ÀÇ ¼ÒÀ¯ÀÚ°¡ ÇöÀç »ç¿ëÀÚÀ̸é Âü
   [ -G FILE ]           : FILE ÀÇ ±×·ìÀÌ ÇöÀç »ç¿ëÀÚÀÇ ±×·ì°ú °°À¸¸é Âü
   [ FILE1 -nt FILE2 ]   : FILE1ÀÌ FILE2 º¸´Ù »õ·Î¿î ÆÄÀÏÀ̸é ( ÃÖ±ÙÆÄÀÏÀ̸é ) Âü
   [ FILE1 -ot FILE2 ]   : FILE1ÀÌ FILE2 º¸´Ù ¿À·¡µÈ ÆÄÀÏÀ̸é Âü
   [ FILE1 -ef FILE2 ]   : FILE1 ÀÌ FILE2ÀÇ Çϵ帵ũ ÆÄÀÏÀ̸é Âü

 2.2 if ±¸¹®
   if ¹®Àº Á¶°ÇÀ» ÆÇ´ÜÇÏ¿© ÁÖ¾îÁø ¹®ÀåÀ» ¼öÇàÇÑ´Ù.

   1. Çü½Ä 1  ( ´ÜÀÏ if ¹® )
   Çü½Ä :
     if [ Á¶°Ç ]
     then
       ¹®Àå1
       ¹®Àå2
     fi

   2. Çü½Ä 2  ( if~else ¹® )
   Çü½Ä :
     if [ Á¶°Ç ]
     then
       ¹®Àå3
       ¹®Àå4
     fi

   3. Çü½Ä 3  ( if~elif ¹® )
   Çü½Ä :
     if [ Á¶°Ç ]
     then
       ¹®Àå1
       ¹®Àå2
     elif
       ¹®Àå3
       ¹®Àå4
     else
       ¹®Àå5
       ¹®Àå6
     fi

 2.3 case ±¸¹®
 ¡Ø ÆÐÅÏ¿¡´Â * ¹®ÀÚ, Áï ¿ÍÀϵåÄ«µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
 Çü½Ä :
     case º¯¼ö in
       ÆÐÅÏ [ | ÆÐÅÏ ] ... ) ¹®Àå ;;
       ÆÐÅÏ [ | ÆÐÅÏ ] ... ) ¹®Àå ;;
       ....
       * ) ¹®Àå ;;
     easc

 2.4 ¸ñ·Ï
   ¿©·Á¸í·ÉÀ» ½ÇÇàÇÒ¶§ ¾ÕÀÇ ¸í·ÉÀÇ °á°ú¿¡ ÀÇÇؼ­ ´ÙÀ½ÇൿÀÌ °áÁ¤µÇ¾î¾ß ÇÒ °æ¿ì
   °¡ ÀÖ´Ù. ÀÌ·±°æ¿ì¿¡ AND³ª ORÁ¶°ÇÀ» »ç¿ëÇؼ­ Çѹø¿¡ ó¸®ÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ½©
   ½ºÅ©¸³Æ® »Ó ¾Æ´Ï¶ó ¸í·ÉÇà¿¡¼­µµ »ç¿ë °¡´ÉÇÏ´Ù. ¹°·Ð if ¹®À» ÀÌ¿ëÇؼ­ ¹Ýȯ°ª
   À» °Ë»çÇÏ¿© ó¸®ÇÒ ¼ö ÀÖÁö¸¸ ¹®ÀåÀÌ ±æ¾îÁö°í º¹ÀâÇØÁø´Ù.

   AND ¸ñ·Ï

       statment1 && statment2 && statmentN && .....

       À§ÀÇ ¸í·ÉµéÀº °¢ ¸í·ÉÀÌ °ÅÁþÀÌ µÉ ¶§ ±îÁö ¸í·ÉÀ» ¼öÇàÇØ ³ª°£´Ù. ¼öÇ൵Áß
       °á°ú°¡ °ÅÁþÀÌ µÇ¸é ±×ÀÌÈÄÀÇ ¸í·ÉÀº ¼öÇàµÇÁö ¾Ê´Â´Ù.

   OR  ¸ñ·Ï

       statment1 || statment2 || statmentN || .....

       À§ÀÇ ¸í·ÉµéÀº °¢ ¸í·ÉÀÌ °ÅÁþÀÌ ³ª¿À´Â µ¿¾È °è¼ÓµÈ´Ù. Áï ÂüÀÌ ³ª¿À¸é ½ÇÇà
       À» ¸ØÃá´Ù.

   AND¿Í OR¸ñ·ÏÀº È¥¿ëÀÌ °¡´ÉÇÏ´Ù.

       [ Á¶°Ç ] && ¹®Àå1 || ¹®Àå2

       À§ÀÇ ¿¹´Â Á¶°ÇÀÌ ÂüÀÌ¸é ¹®Àå1À» ¼öÇàÇÏ°í °ÅÁþÀÌ¸é ¹®Àå2¸¦ ¼öÇàÇÑ´Ù.

       ¶ÇÇÑ À§ÀÇ ¹®Àå1À̳ª ¹®Àå2¿¡¼­ ¿©·¯°³ÀÇ ¹®ÀåÀ» ¼öÇà ÇÏ°í ½ÍÀ» ¶§´Â {}¸¦
       »ç¿ëÇÏ¸é µÈ´Ù.

       [Á¶°Ç] && {
                   ¹®Àå1
                   ¹®Àå2
                   ¹®Àå3
                         } || {
                                ¹®Àå4
                                ¹®Àå5
                                ¹®Àå6
                              }

3. Á¦¾î¹®
 3.1 for
 for ¹®Àº ÁöÁ¤µÈ ¹üÀ§¾È¿¡¼­ ·çÇÁ¸¦ ¼öÇàÇÑ´Ù. ¹üÀ§´Â ¾î¶² ÁýÇÕµµ °¡´ÉÇÏ´Ù.
 Çü½Ä :
        for º¯¼ö in °ª1, °ª2, ...
        do
            ¹®Àå
        done

 ¸Å ·çÇÁ¸¦ µ¹¶§¸¶´Ù º¯¼öÀÇ °ªÀº in ÀÌÈÄÀÇ °ªÀ¸·Î ´ëüµÈ´Ù.
 ¿¹)
     for str in "test1", "test2", "test3", "test4"
     do
        echo @str
     done

 Ãâ·Â )

     test1
     test2
     test3
     test4

 °ª¿¡´Â ¿ÍÀϵå Ä«µå È®ÀåÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.

   for file in $(ls -a | grep "^.")
   do
     echo "$file is Hidden File"
   done

 À§ ¿¹ÀÇ Ãâ·Â °á°ú´Â ÇöÀçµð·ºÅ丮¿¡¼­ óÀ½ÀÌ "." À¸·Î½ÃÀÛÇÏ´Â ÆÄÀÏ(È÷µçÆÄÀÏ) ¸¸
 À» Ãâ·ÂÇÑ´Ù.

 for file in $(ls chap[345].txt); do
     echo "--- $file ---" >> Books.txt
     cat $file >> Books.txt
 done

 À§ÀÇ¿¹´Â chap3.txt, chap4.txt, chap5.txt ÆÄÀÏÀ» Books.txt ¶ó´Â ÆÄÀÏ¿¡ ºÙ¿© ³Ö
 ´Â´Ù.

 ´ÙÀ½ÀÇ ¿¹¸¦ º¸°í °á°ú¸¦ ¿¹ÃøÇغ¸ÀÚ

 echo "\$* output"

 for fvar in $*
 do
   echo $fvar
 done

 echo "\$@ output"
 for fvar in $@
 do
   echo $fvar
 done

 3.2 while
   for ¸í·ÉÀÇ °æ¿ì´Â Ƚ¼ö¸¦ ÁöÁ¤Çؼ­ ·çÇÁ¸¦ ¼öÇàÇϴµ¥´Â ¹®Á¦°¡ ÀÖ´Ù.
   while ¹®Àº ½ÇÇàȽ¼ö°¡ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ»¶§ Æí¸®ÇÏ´Ù.

   Çü½Ä :
          while Á¶°Ç¹®
          do
               ¹®Àå
          done

   ¿¹Á¦¸¦ º¸ÀÚ. Æнº¿öµå¸¦ ÀÔ·Â¹Þ°í ¸Â´ÂÁö È®ÀÎÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

   echo "Enter Password : "
   read password1

   echo "Retype Password : "
   read password2

   while [ "$password1" != "$password2" ]
   do
        echo "Password miss match Try again "

        echo "Retype Password : "
        read password2
   done

   echo "OK Password Match complete"



   ¾î¶»°Ô µ¿ÀÛÇϴ°¡ ?

 3.3 until
   untilÀº while¹®°ú µ¿ÀÏÇÑ È¿°ú¸¦ ³»Áö¸¸ Á¶°ÇÀÌ ¹Ý´ëÀÌ´Ù. Áï, while¹®Àº Á¶°ÇÀÌ
   Âü Àϵ¿¾È ·çÇÁ¸¦ ¼öÇàÇÏÁö¸¸ untilÀº Á¶°ÇÀÌ °ÅÁþÀÏ µ¿¾È ·çÇÁ¸¦ ¼öÇàÇÑ´Ù.
   
   Çü½Ä :
     until Á¶°Ç¹®
     do
      ¹®Àå
     done
   
   ´ÙÀ½ ¿¹¸¦ º¸ÀÚ. ÀÌ ¿¹´Â ÁöÁ¤ÇÑ À¯Àú°¡ ·Î±×ÀÎ ÇÏ¸é ¾Ë·ÁÁØ´Ù.
   
   #!/bin/sh
   
   until who | grep "$1" > /dev/null
   do
       sleep 10
   done
   
   echo "User $1 just logged in ^_^"

3.4 select
   select ¹®Àº ¿øÇÏ´Â ¸®½ºÆ®¸¦ Ãâ·ÂÇÏ°í ±×Áß ¼±ÅõȰÍÀ» µ¹·ÁÁÖ´Â ±¸¹®ÀÌ´Ù. ÁÖÀÇ
   ÇÒÁ¡Àº selectÀÇ ·çÇÁ³»¿¡¼­´Â ÀÚµ¿ÀûÀ¸·Î ·çÇÁ¸¦ ¹þ¾î³¯ ¼ö ¾ø´Ù. ¹Ýµå½Ã break
   ¹®À» »ç¿ëÇؼ­ ·çÇÁ¸¦ ¹þ¾î³ª¾ß ÇÑ´Ù.

   ¿¹) °£´ÜÇÑ ÄûÁî ^_^

     #!/bin/sh
     
     echo "´ÙÀ½Áß ½ºÅ©¸³Æ®¾ð¾î ÇÁ·Î±×·¡¹Ö¿¡ ¼ÓÇÏ´Â °ÍÀº ?"
     select var in "½© ÇÁ·Î±×·¡¹Ö" "C ÇÁ·Î±×·¡¹Ö" "ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö" "Exit"
     do
         if [ "$var" = "½© ÇÁ·Î±×·¡¹Ö" ]
         then
                 echo "Á¤´äÀÔ´Ï´Ù."
                 exit 0
         elif [ "$var" = "Exit" ]
         then
                 echo "Á¾·áÇÕ´Ï´Ù."
                 exit 1
         else
                 echo "$var À» ¼±ÅÃÇϼ̽À´Ï´Ù. ¿À´äÀÔ´Ï´Ù."
                 echo "´ÙÀ½Áß ½ºÅ©¸³Æ®¾ð¾î ÇÁ·Î±×·¡¹Ö¿¡ ¼ÓÇÏ´Â °ÍÀº ?"
         fi
     done

4. ÇÔ¼ö
 ½© ½ºÅ©¸³Æ® ³»ºÎ¿¡ ¶Ç´Â ´Ù¸¥ ½ºÅ©¸³Æ®ÆÄÀÏ¿¡ ÇÔ¼ö¸¦ Á¤ÀÇÇØ ³õ°í »ç¿ëÇÒ ¼ö ÀÖ´Ù.
 ÇÔ¼ö¸¦ »ç¿ëÇϸé Äڵ带 ÃÖÀûÈ­ ÇÒ ¼ö ÀÖ°í, ÄÚµùÀÌ °£°áÇØÁö¸ç,Àç»ç¿ëÀÌ °¡´ÉÇÏ´Ù.
 ±×·¯³ª ´Ù¸¥ ½ºÅ©¸³Æ® ÆÄÀÏÀ» È£ÃâÇؼ­ ÇÔ¼ö¸¦ ½ÇÇàÇÒ °æ¿ì, °¡´ÉÀº ÇÏÁö¸¸ ½ºÅ©¸³
 Æ®ÀÇ ½ÇÇà½Ã°£ÀÌ ±æ¾îÁö°í, ÇÔ¼öÀÇ °á°ú¸¦ Àü´ÞÇÏ´Â °ÍÀÌ ±î´Ù·Ó±â ¶§¹®¿¡ °¡±ÞÀûÀÌ
 ¸é ¿ÜºÎÆÄÀÏÀÇ ÇÔ¼ö´Â ¾È¾²´Â °ÍÀÌ ÁÁ´Ù.

 Çü½Ä :
   Á¤ÀÇ -
   ÇÔ¼ö¸í ()
   {
    ¹®Àå
    return °ª
   }
   
   »ç¿ë
   
   ÇÔ¼ö¸í ÀÎÀÚ1, ÀÎÀÚ2, ...
   
   
   ÇÔ¼ö´Â µ¶¸³ÀûÀ¸·Î $#, $*, $0 µîÀÇ ÀÎÀÚº¯¼ö¸¦ »ç¿ëÇÑ´Ù. Áï ÇÔ¼ö³»ÀÇ $#°ú º»Ã¼
   ÀÇ $#Àº ´Ù¸¦ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.
   
   ´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ
   
   #!/bin/sh

   func()
   {
     echo ------ this is func --------
     echo "This Script Executable File : $0"
     echo "Argument Count : $#"
     echo "Process ID : $$"
     echo "Argument List \$* : $*"
     echo "Argument List \$@ : $@"
     echo "Argument 1 : $1"
     echo "Argument 2 : $2"
     echo "Argument 3 : $3"
   }

   echo ------ this is main --------
   echo "This Script Executable File : $0"
   echo "Argument Count : $#"
   echo "Process ID : $$"
   echo "Argument List \$* : $*"
   echo "Argument List \$@ : $@"
   echo "Argument 1 : $1"
   echo "Argument 2 : $2"
   echo "Argument 3 : $3"
   echo "Argument 4 : $4"
   func aa bb cc


   º»Ã¼¿Í ÇÔ¼ö¿¡¼­ µ¿ÀÏÇÑ º¯¼ö¸¦ º¸¿©ÁÖÁö¸¸ °ªÀº Ʋ¸°´Ù´Â°ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
   
   ÇÔ¼ö¿¡¼­ °ªÀ» ¹ÝȯÇϱâ - ÇÔ¼ö¿¡¼­ ¹Ýȯ°ªÀº ¹Ýµå½Ã Á¤¼ö°ª¸¸À» ¹ÝȯÇÒ ¼ö ÀÖ´Ù.
   ÀÌ °ªÀ» ifµîÀ¸·Î Á¶°ÇÀ» ÆÇ´ÜÇؼ­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¹Ýȯ°ªÁß 0Àº ÂüÀ¸·Î ³ª¸ÓÁö
   ¼ýÀÚ´Â °ÅÁþÀ¸·Î ÆǺ°µÈ´Ù.

5. ¸í·É¾î
 ½©¿¡¼­ ¾µ ¼ö ÀÖ´Â ¸í·É¾î´Â µÎ°¡Áö·Î ³ª´©¾îÁø´Ù. ¸íÇÁ·ÒÇÁÆ® »ó¿¡¼­ ½ÇÇà ½Ãų ¼ö
 ÀÖ´Â ¿ÜºÎ ¸í·É¾î¿Í ½© ³»ºÎ ¸í·ÉÀÌ´Ù. ³»ºÎ¸í·ÉÀº º¸Åë ½© ³»ºÎ³ª ½© ±¸¹®»ó¿¡¼­
 ¾²ÀδÙ. ¿ÜºÎ¸í·ÉÀº ½©¿¡ °ü°è¾øÀÌ »ç¿ëÀÌ °¡´ÉÇÏ´Ù.

 break
   Á¦¾î¹®À̳ª Á¶°Ç¹®ÀÇ ·çÇÁ¸¦ ºüÁ®³ª°¥¶§ »ç¿ëÇÑ´Ù.
   ¿¹)
    while [ $a -eq 10 ]
    do
    if [ $a -eq 5 ]; then
    break
    fi
    done

 :¸í·É
   Àǹ̾ø´Â ¸í·É. ³í¸®°ª true¸¦ ´ë½ÅÇØ ¾²±âµµ ÇÑ´Ù.

 continue
   Á¦¾î¹®À̳ª Á¶°Ç¹®ÀÇ Ã³À½À¸·Î µ¹¾Æ°¡¼­ ´Ù½Ã¼öÇàÇÑ´Ù.
   ¿¹)
    while [ $a -eq 10 ]
    do
       if [ $a -eq 5 ]; then
              continue
           fi
    done

 . ¸í·É
   . ¸í·ÉÀ» »ç¿ëÇϸé ÇöÀç ½©¿¡¼­ ¸í·ÉÀ» ½ÇÇà½ÃŲ´Ù ±×·¯¹Ç·Î ½ÇÇàµÈ ¸í·ÉÀÇ °á°ú
   ¸¦ º» ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
   
   ¿¹¸¦ µé¸é A ¶ó´Â ½ºÅ©¸³Æ®¿¡¼­ B¶ó´Â ½ºÅ©¸³Æ®¸¦ ±×³É ½ÇÇàÇÒ °æ¿ì B¿¡¼­ÀÇ º¯È­
   (ȯ°æº¯¼ö µî)´Â A¿¡°Ô ¾Æ¹«·± ¿µÇâµµ ¹ÌÄ¡Áö ¾Ê´Â´Ù. ±×·¯³ª . ¸í·ÉÀ» »ç¿ëÇؼ­
   ½ÇÇàÇϸé B¿¡¼­ÀÇ º¯È­°¡ A¿¡µµ ¿µÇâÀ» ¹ÌÄ£´Ù.

 echo
   ¹®ÀåÀ» Ãâ·ÂÇÑ´Ù. ÀÚµ¿À¸·Î °³Ç๮ÀÚ°¡ »ðÀԵȴÙ. ( ´ÙÀ½ÁÙ·Î ³Ñ¾î°£´Ù )

 eval
   ÀÎÀÚÀÇ ½ÇÁ¦ °ªÀ» ±¸Çϴµ¥ »ç¿ëÇÑ´Ù.

   foo=10
   x=foo
   y='$'$x
   echo $y

   ÀÌ ¿¹¸¦ ½ÇÇàÇØ º¸¸é $foo°¡ Ãâ·ÂµÈ´Ù

   foo=10
   x=foo
   eval y='$'$x
   echo $y

   ÀÌ ¿¹¿¡¼­´Â $fooÀÇ °ª Áï 10 ÀÌ Ãâ·ÂµÈ´Ù. eval¸í·ÉÀº ¿øÇÏ´Â ¹®ÀÚ¿­µéÀ» Á¶ÇÕÇØ
   ¼­ º¯¼ö¸¦ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Ù.

 exec
   ÇöÀ罩À» ´Ù¸¥ ÇÁ·Î±×·¥À¸·Î ´ëüÇÑ´Ù.

   ¿¹ ) exec csh

 exit n
   ÇöÀç ½©À» Á¾·áÇÑ´Ù. Á¾·á½Ã n °ªÀ» ¸®ÅÏÇÑ´Ù.

 export
   ÇØ´ç ½©¿¡¼­ ÆÄ»ýµÈ ÀÚ½Ä ÇÁ·Î¼¼½º¿¡¼­ exportÇÑ È¯°æº¯¼ö´Â º»·¡ ½©¿¡¼­ °ü¸®ÇÑ
   ´Ù.

 expr
   Ç¥Çö½ÄÀÇ °ªÀ» ±¸ÇÑ´Ù.    ( x=`expr 1 + 2` )
   ¿äÁòÀº exprº¸´Ù´Â $((°è»ê½Ä)) ±¸¹®À» ¸¹ÀÌ »ç¿ëÇÑ´Ù.

 printf
   C ¾ð¾îÀÇ printf¸í·É°ú Èí»çÇÏ´Ù.
   
   Çü½Ä :  printf "Format String" arg1 arg2 arg3 ...

 return
   ½©ÇÔ¼ö¿¡¼­ °ªÀ» ¹Ýȯ ÇÒ ¶§ ¾²ÀδÙ.
   0Àº ¼º°øÀ» 1~125±îÁö´Â ½© ¿¡·¯Äڵ带 ³ªÅ¸³½´Ù.

 set
   ½© ³»ºÎ¿¡¼­ ¸Å°³ ÀÎÀÚ¸¦ ¼³Á¤ÇÑ´Ù.
   setÀÇ ÀÎÀÚ·Î ¾²ÀÎ ¹®ÀÚ¿­Àº °ø¹é¿¡ ÀÇÇØ $1 ºÎÅÍ Â÷·Ê´ë·Î ´ëÀԵȴÙ.
   
   ¿¹)
   
   #!/bin/sh
   echo $#
   set $(ls)
   echo $#
   
   °á°ú´Â
   
   0
   22
   
   ÀÌ´Ù..( 22´Â ÇÊÀÚÀÇ ls °á°úÀÇ °¹¼öÀÌ´Ù. ). ù¹ø° 0´Â ÀÌ ½ºÅ©¸³Æ®¿¡ Àμö°¡
   ¾øÀ¸¹Ç·Î 0ÀÌ°í set $(ls) ¿¡ ÀÇÇؼ­ ÀμöÀÇ °¹¼ö°¡ 22°³·Î ´Ã¾ú´Ù.

 shift
   ½©ÀÇ ÀÎÀÚ¸¦ ÇÑÀÚ¸®¾¿ ¾Æ·¡·Î( n -> 1 ·Î ) À̵¿½ÃŲ´Ù.
   
   ¿¹)
   #!/bin/sh
   
   echo $1
   shift
   echo $1
   shift 5
   echo $1
   
   #./myscript 1 2 3 4 5 6 7 8 9 0
   1
   2
   7

trap
   ½©ÀÇ ½ÇÇ൵Áß ½Ã±×³ÎÀ» ó¸®ÇÏ´Â ½Ã±×³Î 󸮱⸦ ¸¸µå´Â ¿ªÇÒÀ» ÇÑ´Ù.
   
   Çü½Ä : trap command signal
   
   ½© ½ºÅ©¸³Æ®´Â À§¿¡¼­ ¾Æ·¡·Î ½ÇÇàµÇ¹Ç·Î º¸È£ÇÏ·Á´Â ºÎºÐ ÀÌÀü¿¡ trap¸í·ÉÀ» »ç
   ¿ëÇØ¾ß ÇÑ´Ù. trapÁ¶°ÇÀ» ±âº»À¸·Î »ç¿ëÇÏ·Á¸é ¸í·É¿¡ - ¸¦ ³ÖÀ¸¸é µÈ´Ù.
   ½ÅÈ£¸¦ ¹«½ÃÇÏ·Á¸é '' ºó ¹®ÀÚ¿­À» ÁØ´Ù.

 unset
  º¯¼ö³ª ÇÔ¼ö¸¦ Á¦°ÅÇÑ´Ù.

6. ¸í·É½ÇÇà
 ¿ÜºÎ¸í·ÉÀÇ ½ÇÇà °á°ú¸¦ º¯¼ö¿¡ Áý¾î³Ö¾î º¯¼öÀÇ °ªÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
 
 Çü½Ä : x = $(¸í·É)
 
 ÀÌ·¸°Ô º¯¼ö¿¡ °á°ú¸¦ ³ÖÀº ÈÄ¿¡´Â ÀÌ º¯¼ö¸¦ ÀϹݹ®ÀÚ¿­·Î »ý°¢ÇÏ°í ¿øÇÏ´Â °¡°øÀ»
 Çؼ­ °á°ú¸¦ ¾ò¾î³¾ ¼ö ÀÖ´Ù.
 À§¿¡¼­ º¸¾Ò´ø ¸Å°³º¯¼ö È®ÀåÀ̳ª set¸í·ÉÀ» ÀÌ¿ëÇؼ­ ¿øÇÏ´Â ºÎºÐÀ» ÃßÃâÇØ ³»¸é
 ±×¸¸ÀÌ´Ù.

7. ½© ½ºÅ©¸³Æ® ³»ºÎ¿¡¼­ ¸í·É¿¡ ÀÔ·Â Àü´ÞÇϱâ ( Here Documents )
 ÀÌ ±â´ÉÀº ½© ³»ºÎ¿¡¼­ ¸í·É¾î¿¡ ÀÔ·ÂÀ» Àü´ÞÇÏ´Â ¹æ¹ýÀÌ´Ù. Àü´ÞµÈ ÀÔ·ÂÀº ¸¶Ä¡ Å°
 º¸µå¿¡¼­ ´­·ÁÁø °Í ó·³ ¹ÝÀÀÇÑ´Ù.
 
 Çü½Ä :  ¸í·É << Á¾·á¹®ÀÚ¿­
  ÀԷ°ª.....
  Á¾·á¹®ÀÚ¿­
 ¿¹Á¦ ) ÀÚµ¿À¸·Î ¸ÞÀÏÀ» º¸³»´Â ½ºÅ©¸³Æ®
 
 #!/bin/sh
 
 mail $1 << myscript
 This is Header
 This is Body
 .
 
 myscript


Modify Delete Post Reply Backward Forward List
Powered by Kang Jul Ki