 α׷ 

 :  ʺڿ  α׷
            ( 븲ǻ, ѵ,̸뿪, 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
