본 글은 아래 영상을 통해 공부하고 작성했습니다. 제 글보다 영상 시청이 더 도움 될 것입니다.
exit
- 실행된 프로그램이 종료된 상태를 전달
- 0 : 프로그램 또는 명령이 성공으로 종료했음을 의미
- 1-255 : 프로그램 또는 명령이 실패로 종료했음을 의미
- 1 : 일반에러
- 2 : Syntax error
- 126 : 명령을 실행할 수 없음
- 127 : 명령이 존재하지 않음
- 128 : 종료 시그널 + N(kill -9 PID로ㅓ 종료시 128+9=137 이 된다.)
- $? : 종료 값 출력
test
- 비교연산자
- test <명령어> 또는 [ 명령어 ]
- 명령어 실행결과를 true(0) 또는 false(1)로 리턴한다.
- test 명령어는 다양한 연산자를 지원한다.
연산자 | 설명 |
x -eq y | x값과 y값이 같으면 true를 리턴 |
x -gt y | x값이 y값보다 크면 true를 리턴 |
x -ge y | x값이 y값보다 크거나 같으면 true를 리턴 |
x -lt y | x값이 y값보다 작으면 true를 리턴 |
x -le y | x값이 y값보다 작거나 같으면 true를 리턴 |
x -ne | x값과 y값이 같지 않으면 true를 리턴 |
-e file | 파일이 존재하면 true를 리턴 |
-d file | 파일이 디렉토리면 true를 리턴 |
-f file | 파일이 디렉토리면 false를 리턴 |
-x file | 파일이 디렉토리면 true를 리턴 |
if-then-fi
- 조건 명령어. command 실행 결과에 따라 서로 다른 command를 실행
- if command1 then command2 fi : command1이 true일 경우 command2를 실행, false일 경우 exit된다.
- if commnad1 then command2 else command3 fi : command 1이 true일 경우 command2를 실행하고 false일 경우 command3를 실행한다.
# vi if-exam1.sh
#!/bin/bash
x=10
if test $x -gt 5
then
echo "x is greater than 5"
fi
위와 같은 쉘 스크립트를 작성한다.
# chmod u+x if-exam1.sh
# if-exam1.sh
쉘 스크립트에 실행권한을 부여하고 스크립트를 실행시킨다.
# vi bin/if-exam2.sh
#!/bin/bash
if test -e /etc/passwd
then
ls -l /etc/passwd
else
echo "/etc/passwd file does not exist!"
fi
# chmod u+x if-exam2.sh
# if-exam2.sh
case
- $var의 값에 따라 선택해서 명령어를 실행
#
#!/bin/bash
echo -n "What do you want?"
read answer
case $answer in
[yY]es) echo "System restart";;
[nN]o) echo "Shutdown the system";;
*) echo "entered incorrectly";;
esac
;; 는 명령어의 끝을 의미한다.
[yY] 와 같이 입력하면 y를 대소문자 구별없이 인식한다.
# chmod u+x case-exam1.sh
# case-exam1.sh
case-exam1.sh를 실행하고 yes, no, 아무 값을 3번 넣어본 결과이다.
종합 예제
# vi bin/case-exam2.sh
#!/bin/bash
#:Usage : case-exam.sh
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 choice!"
exit 1;;
esac
exit 0
# chmod u+x case-exam2.sh
# case-exam2.sh
연습문제
- 다음의 조건에 맞는 shell script 를 작성하세요.
- 대화식으로 사용자에게 디렉토리 이름을 입력 받으시오.
- 입력한 디렉토리 이름이 실제 디렉토리이면 해당 디렉토리 모든 파일 목록을 /tmp/날짜.txt 로 저장하고, 디렉토리가 아니면 "It's not a directory." 메시지를 출력하고 종료하는 shell script를 작성하시오.
# vi bin/joon.sh
#!/bin/bash
echo -n "Input a directory name:"
read name
if test -d $name
then
ls -l $name > /tmp/$(date +%Y%m%d).txt
else
echo "It's not a directory"
fi
exit 0
'Bash Shell Programming' 카테고리의 다른 글
Bash Shell Programming(9) (0) | 2021.07.25 |
---|---|
Bash Shell Programming(7) (0) | 2021.07.23 |
Bash Shell Programming(6) (0) | 2021.07.23 |
Bash Shell Programming(5) (0) | 2021.07.22 |
Bash Shell Programming(4) (0) | 2021.07.21 |