본문 바로가기
UNIX 시스템

조건식 / 프로그램 인자 - 13주차 - 1

by 세인트킴 2023. 6. 2.

조건식

문자열 비교, 정수 비교, 파일 검사(일반 파일, 디렉토리, 읽기가능, 쓰기가능, 실행가능,...), 논리식 구성(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