조건식
문자열 비교, 정수 비교, 파일 검사(일반 파일, 디렉토리, 읽기가능, 쓰기가능, 실행가능,...), 논리식 구성(and, or, not)
조건식 예
더보기
#!/bin/bash
if test "hello" = "Hello"
then echo TRUE
fi
#!/bin/bash
if [ "hello" = "hello" ]
then echo TRUE
fi
조건식 사용 시 주의사항
[ 와 ] 는 각각 독립된 문자로 인식되야 한다.
올바른 예
- [ a = b ]
잘못된 예
- [a = b] [ 와 a, 그리고 b와 ] 사이에 공백이 필요하다.
- [ a=b ] =와 a, b 사이에 공백 필요 (연산자와 피연산자 구분 필요)
프로그램 인자
프로그램이 실행될 때 전달되는 값, 프로그램명 옆에 인자들을 차례대로 적음
- 프로그램명 인자1 인자2 인자3
- $1, $2, ..., $9 각각 첫번째, 두번째, ..., 아홉번째 인자를 의미한다.
- $0 0번째 인자는 프로그램 이름
- $* 모든 인자를 의미
- $# 인자의 개수
프로그램 인자 예
#!/bin/bash
echo "The program nam: $0"
echo "1st arg: $1"
echo "2nd arg: $2"
echo "3rd arg: $3"
./myscript13 How are you
The program name: ./myscript13
1st arg: How
2nd arg: are
3rd arg: you
#!/bin/bash
echo "The number of arguments: $#"
echo "Arguments are $*"
./myscript14 How are you
The number of arguments: 3
Arguments are How are you
조건 표현식(expression)
문자열 비교 | |
표현식 | 설명 |
문자열 | 빈 문자열이 아니면 참 |
문자열 1 = 문자열 2 | 문자열 1과 문자열 2가 같으면 참 |
문자열 1 != 문자열 2 | 문자열 1과 문자열 2가 다르면 참 |
-n 문자열 | 문자열의 길이가 0보다 크면 참 |
-z 문자열 | 문자열의 길이가 0이면 참 |
정수 비교 | |
표현식 | 설명 |
정수 1 -eq 정수 2 | 정수 1과 정수 2가 같으면 참 |
정수 1 -ge 정수 2 | 정수 1이 정수 2보다 크거나 같으면 참 |
정수 1 -gt 정수 2 | 정수 1이 정수 2보다 크면 참 |
정수 1 -le 정수 2 | 정수 1이 정수 2보다 작거나 같으면 참 |
정수 1 -lt 정수 2 | 정수 1이 정수 2보다 작으면 참 |
정수 1 -ne 정수 2 | 정수 1이 정수 2와 다르면 참 |
파일 검사 | |
표현식 | 설명 |
-d 파일 | 파일이 디렉토리면 참 |
-f 파일 | 파일이 일반 파일이면 참 |
-r 파일 | 파일이 읽기가능이면 참 |
-w 파일 | 파일이 쓰기가능이면 참 |
-x 파일 | 파일이 실행가능이면 참 |
-s 파일 | 파일의 길이가 0이 아니면 참 |
-t [file_desc ] | file_desc가 터미널과 연관되어 있으면 참 |
논리식 구성 | |
표현식 | 설명 |
! | NOT |
-a | AND |
-o | OR |
조건식 예
입력받은 숫자의 크기가 1~10인지 검사
#!/bin/bash
read num
if [ $num -ge 1 -a $num -le 10 ]; then
echo "OK"
fi
파일이 일반파일이고, 읽기 가능이면 내용을 출력
#!/bin/bash
read filename
if [ $filename -f -a -r $filename ]
cat $filename
fi
실습1(for, if, 조건식)
더보기
현재 디렉토리에 있는 모든 파일에 대해 다음과 같은 메세지를 출력하는 프로그램 myls를 작성하시오.
#!/bin/bash
for file in $(ls)
do
if [ -f $file ]; then
echo "$file은 일반 파일입니다."
else
if [ -d $file ]; then
echo "$file은 디렉토리입니다."
fi
fi
done
실습2(프로그램 인자, while, 산술계산)
더보기
프로그램 인자가 숫자로 전달되면, 1부터 해당 숫자까지 합을 계산하여 출력하는 프로그램 sumto를 작성하시오.
#!/bin/bash
num=$1
sum=0
i=1
while [ $i -le $num ]
do
let sum+=i
let i+=1
echo $sum
done
실습3(프로그램 인자, if, who, wc)
더보기
지정한 id가 현재 접속되어 있는지 여부에 따라 다음과 같이 메세지 출력하는 프로그램 checkid를 작성하시오.
- 사용자 Soonhee가 로그인 되어 있는 경우
Soonhee 님은 로그인 되어 있습니다.
- 사용자 Soonhee가 로그인 되어 있지 않은 경우
Soonhee 님은 로그인 접속 중이 아닙니다.
#!/bin/bash
if [ $# -eq 0 ]; then
userid=$LOGNAME
else
userid=$1
num=$(who | grep $userid | wc -l)
if [ $num -eq 0 ]; then
echo "$userid님은 접속 중이 아닙니다."
else
echo "$userid님은 로그인 되어 있습니다."
fi
'UNIX 시스템' 카테고리의 다른 글
Process Management - 14주차 수업 - 1 (0) | 2023.06.11 |
---|---|
Function - 13주차 수업 - 2 (0) | 2023.06.02 |
Loop - 12주차 수업 - 2 (실습 3-2 질문) (0) | 2023.06.01 |
Basic Shell Programming - 12주차 - 1 (0) | 2023.06.01 |
Internet, Communication - 11주차 수업 - 2 (0) | 2023.05.31 |