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이상 : 시그널발생
'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 |