0. 시작하기전에
- 이전 포스팅에서는 조건문에 대해서 배웠다.
- 이번 포스팅에서는 조건문을 포함한 추가적인 지식들과 반복문에 대해서 배워보자.
1. 파일 상태에 따른 조건문
- 파일의 상태에 따라서 조건문을 만들 수 있다.
- 파일 상태를 확인하는 쉘 스크립트는 다음과 같다.
a) 실습예제
- 파일의 존재유무에 따른 조건문을 가진 프로그램을 작성해보자.
#!/bin/bash
if [ -e $1 ]
then
echo "file exist"
fi
2. 논리 연산자
- 쉘 스크립트의 논리연산자는 다음과 같이 사용할 수 있다.
3. if~else 구문
- 쉘 스크립트에서 if ~ else 구문은 다음과 같이 작성할 수 있다.
#!/bin/bash
if [ 조건문 ]
then
명령어
else
명령어
fi
a) 실습예제
- if~else 문을 사용하여 두 인자값이 같으면 'same values'를, 다르면 'different values'를 출력하는 프로그램을 작성해보자.
#!/bin/bash
if [ $1 -eq $2 ]
then
echo "same values!"
else
echo "different values!"
fi
4. 조건문 한줄에 작성하기
- if문을 한줄에 작성하는 방식은 다음과 같다.
if [ 조건 ]; then 명령문; fi
#예시
if [ -z $1 ]; then echo "Insert arguments"; fi
- 조건문이 작성되는 대괄호의 시작과 끝에는 공백이 입력 되어야한다.
- 대괄호 내부에 비교 및 논리 연산자를 사용할 때, 에러가 나는 경우에는 괄호를 두겹 [[ ]] 으로 작성하면 해결될 수도 있다.
5. Ping
- 서버는 여러개의 컴퓨터가 인터넷으로 연결되어 있다.
- 각 서버는 컴퓨터 간의 연결이 살아있는지 확인해보기 위해서 ping이라는 일종의 안부인사 메세지를 날린다.
- 각 서버의 ip주소를 기반으로 ping이 전달되면, 해당 ip 주소의 컴퓨터로부터 응답이 회신된다.
- 일정 시간안에 서버로 부터 응답이 오지 않는다면, 해당 서버는 정상적으로 동작하고 있지 않음을 의미한다.
▶ ping -c 1
- ping을 한번만 보내서 확인하라는 의미다.
▶ ping -c 1 192.168.0.1
- ping을 보낼 ip 주소를 입력한다.
▶ ping -c 1 192.168.0.1 1>
- ip주소 다음에 숫자 1> 은 표준 출력을 리다이렉트 하라는 의미다. (이전에 배운 내용입니다.)
- 0을 입력하면 표준 입력
- 2를 입력하면 표준 에러
- 꺽쇄(>)는 꺽쇄 다음에 나올 주소로 리다이렉션 하라는 의미다.
▶ ping -c 1 192.168.0.1 1> /dev/null
- /dev/null은 null 디바이스라고 해서 아무 동작도 하지 않는 디바이스다.
- 즉, 해당 디바이스로 리다이렉션을 한다면 아무 동작도 하지 않는다는 뜻이다.
- 쉘 스크립트를 해석해보면, 해당 ip주소로 ping을 1번만 날려서 확인하고 응답은 null 디바이스로 리다이렉션하라는 의미다.
b) 예제
#!/bin/bash
ping -c 1 127.0.0.53 1> /dev/null # 구글 서버에게 핑을 보내보자!
if [ $? == 0 ]
then
echo "게이트웨이 핑 성공!"
else
echo "게이트웨이 핑 실패!"
fi
- $?는 가장 최근에 실행된 쉘 스크립트의 결과값을 저장하는 변수다.
- ping의 결과값이 0이라는 의미는 서버로부터 응답을 성공적으로 받았다는 말이다.
- ping의 결과값이 0이 아니라면 서버로부터 응답을 받지 못했다는 의미다.
- 위의 예제에서 사용된 ip주소는 구글의 ip주소다. 실행결과는 다음과 같다.
- 만약 다른 도메인서버의 ip주소에게 ping을 보내보고 싶다면, nslookup을 사용하여 ip주소를 확인할 수 있다.
6. for 반복문
- 기본적인 for 반복문은 다음과 같은 문법을 가진다.
#!/bin/bash
for 변수 in 변수값1 변수값2 ...
do
명령문
done
a) 실습예제
- 현재 디렉토리의 파일명을 반복문을 이용하여 출력해보자.
#!/bin/bash
for data in $(ls)
do
echo $data
done
b) 반복문 한줄로 작성하기
- 위의 예제에서 사용된 반복문을 한줄로 작성해보자.
# 예시 1
for data in $(ls); do
echo $data
done
# 예시 2
for data in $(ls); do echo $data; done
7. while 반복문
- 기본적인 while 반복문은 다음과 같은 문법으로 작성한다.
while [ 조건문 ]
do
명령문
done
a) 실습예제
- while문을 이용하여 현재 디렉토리의 파일명을 출력해보자.
#!/bin/bash
filelist=$(ls)
length=${#filelist[@]}
index=0
while [ $index -le $length ]
do
echo ${filelist[$index]}
index=`expr $index + 1`
done
'컴퓨터공학기초 개념 > 시스템 프로그래밍' 카테고리의 다른 글
33. 스레드 - 이해와 기본 (0) | 2021.09.24 |
---|---|
32. 쉘 스크립트 - 현업 예제(backup, log, tar, find) (0) | 2021.09.24 |
30. 쉘 스크립트 - 조건문 (0) | 2021.09.24 |
29. 쉘 스크립트 - 이해와 변수 (0) | 2021.09.23 |
28. 시그널 - 사용법 이해 (0) | 2021.09.21 |
댓글