728x90
 if 문

 if 문은 명령의 결과를 테스트하여 조건적으로 적절한 구문 그룹을 실행
 표현식

   if condition

   then

              command1

   else

              command2

   fi

 실행 순서

   - if 문은 condition에 있는 명령어를 순차적으로 실행

   - 만약 condition의 종료값이 참이라면 command1을 실행

   - 그렇지 않으면 command2를 실행

 예시

① {예제1}
     $vi sample1
     #!/bin/sh
     echo " 읽어들인 파일의 이름 ?" ; read var
     if [ -f $var ]
     then
             echo file
     else
             if [ -d $var ]
             then
                    echo directory
             else
                    echo "not found"
            fi
     fi
     $chmod +x sample1
     $./sample1
     읽어들인 파일의 이름 ?
     /etc/passwd
     file
② {예제2}
     $vi sample2
     #!/bin/sh
     if test -z "$1"
     then
             echo usage:sample2 filename
     fi
     file_size='wc -c < $1'
     echo the file size is $file_size charactors
     if test $file_size -le 5120
     then
             echo the file $1 is a smail file
     else
             echo the file $1 is a large file
     fi
     $chmod +x sample2
     $./sample2
     usage:sample2 filename
     $./sample2 /etc/passwd
     the file size is 3457 charactores
     the file /etc/passwd is a smail file
 
③ {예제3}
     $vi sample3
     if test $# -ne 2
     then
                echo usage:$0 pattern file >&2
                exit 1
     fi
     if grep $1 $2 > /dev/null
     then
                echo grep found what it was looking for
     else
                echo grep cound not find the pattern
     fi
     $chmod +x sample3
     $./ddd
   


 elif 문

 elif 문을 사용하여 여러 조건을 검사

 표현식

    if condition1

    then

               commands1

    elif condition2

    then

               commands2

    else

               commands3

    fi


① {예제1}
     $vi sample4
     #!/bin/sh
     echo "are you man? (yes/no)"; read $var
     if [ -f $var = "yes" ]
     then
             echo "you are man"
     elif [ "$var" = "no" ]
     then
             echo "you are woman"
     else
             echo "enter yes or no"
     fi
     $chmod +x sample4
     $./sample4
     are you man?  (yes/no)
     yes
     you are man
   


 case 문

 여러 패턴을 검사하고 이에 적절한 구문을 실행

 표현식

    case variable in

             pattern1 | pattern .... ) command1;;

             pattern2 | pattern .... ) command2;;

             ...

             *)        commandx;;

    esac

 오른쪽 괄호와 세미콜론은 반드시 필요

 사용자는 원하는 만큼의 pattern 나열이 가능

 각 pattern 위에 따르는 command들 뒤에는 ;; 기호가 반드시 필요

① {예제1}
     $vi sample5
     #!/bin/sh
     echo "*********************************"
     echo "* 보기                            *"
     echo "1.who   2.date   3.pwd   4.ls -l    *"
     echo "*********************************"
     echo "수행하고자 하는 명령어는 ? (번호) "
     read number;
     case $number in
                  1)
                  2)
                  3)
                  4)
                  *)
     esca
     $chmod +x sample sample5
     $./sample5
     *********************************
     * 보기                            *
     *********************************
     1.who   2.date   3.pwd   4.ls -l   *
     *********************************
     수행하고자 하는 명령어는 ? (번호)
     1
     test  pts/0     Jul  8  13:06
 
 
 
② {예제2}
     $vi sample6
     #!/bin/sh
     echo "is it morning ? (yes/no)"
     read ans;
     case "$ans" in
                     yes | y | Yes | YES)        echo "good morning";;
                     no | n | No | NO)             echo "good afternoon";;
                     *)                                   echo "answer not recognize";;
     esac
     $chmod +x sample6
     $./sample6
     is it morning? (yes/no)
     yes
     good morning
   


 기타 제어 명령어

 정상적인 종료 이전에 루프를 멈추고자 할 때 사용

 break [n] : n번 반복한 후 루프에서 빠져나옴

 continue [n] : 나머지 명령을 무시하고 루프에서 처음으로 복귀

 exit [n] : 나머지 명령을 무시하고 프로그램을 완전히 종료


                              ▼ [Shell 프로그래밍에서 사용하는 종료 코드]
0 : 성공
1~125 : 에러
126 : 파일실행불가
127 : 명령을 찾을 수 없음
128이상 : 시그널발생

728x90

'Programming > linux왕초보' 카테고리의 다른 글

어셈 명령어 정리  (1) 2011.03.22
linux 병렬포트(프린트포트) 제어  (0) 2008.10.13
리눅스 버젼확인은 어찌하나요???;;  (0) 2008.09.12
shell programming - 변수  (0) 2008.09.11
shell programming - 제어문  (0) 2008.09.11
shell programming - 반복문  (0) 2008.09.11
shell programming - 목록과 함수  (0) 2008.09.11
shell programming - 명령 실행  (0) 2008.09.11
shell programming  (0) 2008.09.11
shell programming - 명령어  (0) 2008.09.11

+ Recent posts