Branching
1. exit
- 실행된 프로그램이 종료된 상태를 전달 // 모든 명령어는 종료될 떄 종료 코드를 발생.
- exit <숫자>
0 : 프로그램 또는 명령이 성공으로 종료했음을 의미
1-255 : 프로그램 또는 명령이 실패로 종료했음을 의미
1 : 일반 에러
2 : Syntax error
126 : 명령을 실행할 수 없음
127 : 명령 (파일)이 존재하지 않음.
128+N : 종료 시그널 + N (Kill -9 PID 로 종료 시 128+9=137)
- $? : 종료 값 출력.
- Example
[centos@linux-mypc ~]$ date > /dev/null
[centos@linux-mypc ~]$ echo $?
0
# 정상 종료 => 0
[centos@linux-mypc ~]$ cp file1
cp: missing destination file operand after ‘file1’
Try 'cp --help' for more information.
[centos@linux-mypc ~]$ echo $?
1
[centos@linux-mypc ~]$ sleep 100
^C
[centos@linux-mypc ~]$ echo $?
0
2. test
- 비교 연산자
- test <명령어> or [명령어]
- 명령어 실행 결과를 true(0) 또는 false(1)로 return 한다.
- test 명령어는 다양한 연산자를 지원한다.
연산자 | 설명 |
x –eq y | x값과 y값이 같으면 true를 return |
x –gt y | x값과 y값보다 크면 true를 return |
x –ge y | x값과 y값보다 크거나 같으면 true를 return |
x –lt y | x값과 y값보다 작으면 true를 return |
x –le y | x값과 y값보다 작거나 같으면 true를 return |
x –ne | x값과 y값이 같지 않으면 true를 return |
-e file | 파일이 존재하면 true를 return |
-d file | 파일이 디렉토리이면 true를 return |
-f file | 파일이 디렉토리이면 true를 return |
-x file | 파일이 디렉토리이면 true를 return |
- Example
[centos@linux-mypc ~]$ test $x -gt 5
[centos@linux-mypc ~]$ echo $?
0
[centos@linux-mypc ~]$ test $x -lt 5
[centos@linux-mypc ~]$ echo $?
1
[centos@linux-mypc ~]$ test -d 2022-03.txt
[centos@linux-mypc ~]$ echo $?
1
[centos@linux-mypc ~]$ [ $x -lt 5 ]
[centos@linux-mypc ~]$ echo $?
1
[centos@linux-mypc ~]$ [ -d /tmp ]
[centos@linux-mypc ~]$ echo $?
0
[centos@linux-mypc ~]$ let sum=5+5
[centos@linux-mypc ~]$ echo $sum
10
[centos@linux-mypc ~]$ let mul=5*5
[centos@linux-mypc ~]$ echo $mul
25
3. if-then
if [조건문]
then
command1
else
command2
fi
- Example
x=10
if test $x -gt 5
then
echo "x is greater than 5"
fi
[centos@linux-mypc ~]$ if test $x -gt 11; then echo "x if greater than 11"; else echo "x is less than 11"; fi
x is less than 11
[centos@linux-mypc ~]$ if test -e /etc/passwd
> then ls -l /etc/passwd
> else echo "/etc/passwd file does not directory"
> fi
-rw-r--r-- 1 root root 1166 Feb 16 10:25 /etc/passwd
[centos@linux-mypc bin]$ cat exam.sh
#!/bin/bash
#x=3
if test $1 -gt 5
then
echo "x is greater than 5"
else
echo "x is less than 5"
fi
[centos@linux-mypc bin]$ cat exam2.sh
#!/bin/bash
#x=3
if [ $1 -gt 5 ]
then
echo "x is greater than 5"
else
echo "x is less than 5"
fi
4. case
- $var 의 값에 따라 선택해서 명령어를 실행
case "$variable" in
pattern1) command1;;
pattern2) command2;;
*) command3;;
esac
- Example
[centos@linux-mypc bin]$ cat case.sh
#!/bin/bash
echo -n "What do you want?"
read answer
case $answer in
yes) echo "System Restart.";;
no) echo "Shutdown the system";;
*) echo "entered incorrectly";;
esac
[centos@linux-mypc bin]$ case.sh
What do you want?yes
System Restart.
[centos@linux-mypc bin]$ case.sh
What do you want?no
Shutdown the system
[centos@linux-mypc bin]$ case.sh
What do you want?r
entered incorrectly
※ 예제
[centos@linux-mypc bin]$ cat case2.sh
#!/bin/bash
#: Usage
# cat << END = cat << END ~~ END(앞에 띄어쓰기 없어야 함) 한꺼번에 입력받아서 출력하기.
cat << END
============================
Please Select a Number
----------------------------
1: Check disk usage
2: Check the login user list
----------------------------
END
echo -n "number:"
read number
case $number in
1) df -h;;
2) who;;
*) echo "Bad Request!"
exit 1
esac
exit 0
[centos@linux-mypc bin]$ case2.sh
============================
Please Select a Number
----------------------------
1: Check disk usage
2: Check the login user list
----------------------------
number:1
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 100G 2.5G 98G 3% /
/dev/vdb1 50G 53M 47G 1% /disk0
/dev/vdc2 103G 61M 98G 1% /disk2
/dev/vdc1 94G 61M 89G 1% /disk1
/dev/vdd1 99G 61M 94G 1% /disk3
tmpfs 379M 0 379M 0% /run/user/1000
[centos@linux-mypc bin]$ case2.sh
============================
Please Select a Number
----------------------------
1: Check disk usage
2: Check the login user list
----------------------------
number:2
centos pts/0 2022-03-10 13:13 (119.69.107.112)
[centos@linux-mypc bin]$ case2.sh
============================
Please Select a Number
----------------------------
1: Check disk usage
2: Check the login user list
----------------------------
number:3
Bad Request!
Reference
- https://www.youtube.com/watch?v=hG9T3K00qiE&list=PLApuRlvrZKog2XlvGJQh9KY8ePCvUG7Je&index=9
'OS > Linux Server' 카테고리의 다른 글
[Shell Programming] 10. Backup (0) | 2022.03.17 |
---|---|
[Shell Programming] 9. Looping (0) | 2022.03.11 |
[Shell Programming] 7. Input & Output (0) | 2022.03.07 |
[Shell Programming] 6. Positional Parameters (0) | 2022.03.07 |
[Shell Programming] 5. Bash shell Script (0) | 2022.03.02 |