Shell - 8.Branching command

참고 강의 : TTABAE-LEARN


Contents

  • 8-1. exit
  • 8-2. test
  • 8-3. if-then
  • 8-4. case


8-1. exit

모든 명령어는 종료될 때 종료코드를 발생시킴 ( 종료 상태 전달 )

  • exit <숫자>
  • 숫자
    • 0 : 성공적으로 종료
    • 1~255 : 실패로 종료
      • 1 : 일반 에러
      • 2 : Syntax error
      • 126 : 명령 실해 ㅇ불가
      • 127 : 명령 존재 X
      • 128+N : 종료시그널+N
        • ex) kill -9 PID로 종료 시, 128+9 = 137
  • $? : 종료값 출력
  • echo $? : 바로 전에 실행했던 명령어의 종료 코드 출력


example

$ date
$ echo $?
# 바로 전에 실행했던 명령어의 종료 코드
0

$ data
$ echo $?
127

$ copy from_file
$ echo $?
1

$ sleep 100
<ctrl><c>
$ echo %?
130


8-2. test

비교 연산자

  • test <명령어> or [명령]
  • 결과를 0(true) or 1(false) 로 return


example

$ x=10
$ test $x -lt 5
$ echo $?
1

$ test $x -gt 5
$ echo $?
0

$ test -e /etc/passwd # exist 여부
$ echo $?
0

$ test -f /tmp # 파일이니?
$ echo $?
1

$ test -d /tmp # 경로니?
$ echo $?
0


혹은

$ [ $x -lt 5 ]
$ [ $x -gt 5 ]
$ [ -e /etc/passwd ]
$ [ -f /tmp ]


( test 비교연산자 )

let, expr : 산술연산자

$ let sum=5+5
$ echo $sum
10

$ let multi=5*5
$ echo $multi
25


8-3. if-then

if-then문 예시 (1)

$ cat > if-exam1.sh
#! /bin/bash
x=10
if test $x -gt 5
then
  echo "x is greater than 5"
fi
$ chmod +x if-exam1.sh

$ if-exam1.sh
x is greater than 5


if-then문 예시 (2)

$ cat > if-exam2.sh
echo -n "input number: "
read x
if [ $x -gt 5 ]
then
  echo "x is greater than 5"
fi
$ chmod +x if-exam1.sh

$ if-exam1.sh
input number : 10
x is greater than 5

$ if-exam1.sh
input number : 3


8-4. case

  • $var의 값에 따라 선택해서 명령어를 실행
case "$variable" in
  pattern1) command1 ;;
  pattern2) command2 ;;
  *) command3 ;;
esac


example

$ cat > case-exam1.sh
echo -n "what do you want?"
read answer
case $answer in
 yes) echo "System restart";;
 no) echo "Shutdown the system";;
 *) echo "Entered incorrectly";;
esac
$ chmod +x case-exam1.sh

$ case-exam1.sh
what do you want? yes
System restart

$ case-exam1.sh
what do you want? no
Shutdown the system

$ case-exam1.sh
what do you want? YES
Entered incorrectly

Categories:

Updated: