정수 비교
- -eq 같음
if [ "$a" -eq "$b" ]
- -ne 같지 않음
if [ "$a" -ne "$b" ]
- -gt 더 큼
if ["$a" -gt "$b" ]
- -ge 더 크거나 같음
if [ "$a" -ge "$b" ]
- -lt 더 작음
if [ "$a" -lt "$b" ]
- -le 더 작거나 같음
if [ "$a" -le "$b" ]
- < 더 작음(이중 소괄호에서)
(("$a" < "$b"))
- <= 더 작거나 같음(이중 소괄호에서)
(("$a" <= "$b"))
- > 더 큼(이중 소괄호에서)
(("$a" > "$b"))
- >= 더 크거나 같음(이중 소괄호에서)
(("$a" >= "$b"))
- = 같음
if [ "$a" = "$b" ]
- == 같음
if [ "$a" == "$b" ]
= 와 동의어입니다.
[[ $a == z* ]] # $a 가 "z"로 시작하면 참(패턴 매칭) [[ $a == "z*" ]] # $a 가 z* 와 같다면 참 [ $a == z* ] # 파일 globbing이나 낱말 조각남이 일어남 [ "$a" == "z*" ] # $a 가 z* 와 같다면 참 # Thanks, S.C.
- != 같지 않음
if [ "$a" != "$b" ]
이 연산자는 [[ ... ]] 에서 패턴 매칭을 사용.
- < 아스키 알파벳 순서에서 더 작음
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
"<" 가 [ ] 에서 쓰일 때는 이스케이프를 시켜야 하는 것에 주의.
- > 아스키 알파벳 순서에서 더 큼
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
">" 가 [ ] 에서 쓰일 때는 이스케이프를 시켜야 하는 것에 주의.
- -z 문자열이 "null"임. 즉, 길이가 0이면 참.
- -n 문자열이 "null"이 아님. 길이가 0이 아니면 참.
===================================================================== LAB> 비교연산자를 이용한 예제 # a=1 # if [ $a -eq 0 ]; then > echo true > else > echo false > fi false # if [ $a -eq 1 ]; then > echo true > else > echo false > fi true # if [ ! $a -eq 10 ]; then > echo true > else > echo false > fi true - -a and 연산 # a=1 # b=2 # if [ $a -eq 1 -a $b -eq 2 ]; then > echo true > else > echo false > fi # a=1 # b=3 # if [ $a -lt 20 -a $b -ne 10 ]; then > echo true > else > echo false > fi true # if [ ! $a -eq 20 -a ! $b -eq 10 ]; then > echo true > else > echo false > fi true
- -o (or) 를 이용한 비교연산 a=1 b=3 # if [ $a -eq 20 -o $b -eq 3 ]; then > echo true > else > echo false > fi true # a=linux # b=windows # if [ $a = linux ]; then > echo true > else > echo false > fi true # if [ $b != linux ]; then > echo true > else > echo false > [ $b = windows ] && echo windows || echo linux > fi true
=====================================================================
===================================================================== LAB> 국어 점수를 입력받아서 화면에 평가를 출력하는 프로그램을 짜는데 아래 조건을 만족하게 작성하시오. -- 조건 -- 1. if ~ elif 문을 이용할 것 e.g. # if [ $a -eq 2 ]; then > echo true > elif [ $a -eq 3 ]; then > echo true > elif [ $a -eq 1 ]; then > echo "3...." > fi 3.... 2. jumsu.sh 파일의 스크립트를 이용할 것 3. 적절한 변수를 이용할 것 4. 점수는 0 ~ 100만 입력받을 수 있도록 할 것 e.g. # ./jumsu.sh 국어 점수를 입력하세요 : 110 국어 점수 범위가 넘었습니다. 국어 점수 범위는 0 ~ 100 까지만 입력하세요. # ./jumsu.sh 국어 점수를 입력하세요 : -1 국어 점수 범위가 넘었습니다. 국어 점수 범위는 0 ~ 100 까지만 입력하세요. -- 조건 -- -- 평가 범위 -- 수 : 90 ~ 100 우 : 80 ~ 89 미 : 70 ~ 79 양 : 60 ~ 69 가 : 0 ~ 59 -- 평가 범위 -- -- 실행결과 -- # ./jumsu.sh 국어 점수를 입력하세요 : 80 당신의 점수는 아래와 같습니다. 국어 점수 : 80, (우) # ./jumsu.sh 국어 점수를 입력하세요 : 70 당신의 점수는 아래와 같습니다. 국어 점수 : 70, (미) -- 실행결과 -- -- jumsu.sh -- #!/bin/sh str="국어 점수를 입력하세요 : " grade="" # 국어 점수 입력 부분 read -p "$str" kor # 국어 점수 체크 부분 if [ $kor -lt 0 -o $kor -gt 100 ]; then echo echo "국어 점수 범위가 넘었습니다" echo "국어 점수 범위는 0 ~ 100 까지만 입력하세요" exit 1 fi # 점수 평가 부분 if [ $kor -ge 90 -a $kor -le 100 ]; then grade=수 # 90 ~ 100 elif [ $kor -ge 80 -a $kor -le 90 ]; then grade=우 # 80 ~ 89 elif [ $kor -ge 70 -a $kor -le 80 ]; then grade=미 # 70 ~ 79 elif [ $kor -ge 60 -a $kor -le 70 ]; then grade=양 # 60 ~ 69 else grade=가 # 59 미만 fi echo echo 당신의 점수는 아래와 같습니다. echo 국어 점수 : $kor, \($grade\) -- jumsu.sh -- =====================================================================
'Linux > 쉘스크립트' 카테고리의 다른 글
until과 위치 매개변수 사용 (0) | 2015.05.11 |
---|---|
5. 루프 (0) | 2015.05.06 |
4. 테스트와 분기(Testing and Branching) (0) | 2015.05.04 |
2. 파일 테스트 연산자 (0) | 2015.05.04 |
1. 테스트(Test Constructs) (0) | 2015.04.30 |