[Shell] 02. 산술연산과 비교연산
카테고리: BASH
태그: bash
01) test 명령
파일/디렉터리의 존재 유무 판단, 문자열 비교, 숫자 비교를 하기 위해 사용하는 명령으로 주로 IF 문에서 많이 사용하고 조건에 대한 참, 거짓 [ CONDITION ] 형식으로 많이 사용
a) 명령 형식
test CONDITION 또는 [ CONDITION ]
b) 조건 (Condition)
■ 파일에 대한 조건
| 조건 | 설명 |
|---|---|
| -b filename | 파일이 존재하고 block special 파일이면 참 |
| -c filename | 파일이 존재하고 character special 파일이면 참 |
| -d filename | 파일이 존재하고 디렉토리가 존재하면 참 |
| -e filename | 파일이 존재하면 참 |
| -f filename | 파일이 존재하고 정규 파일이면 참 |
| -g filename | 파일이 존재하고 setgid가 적용되어 있으면 참 |
| -k filename | 파일이 존재하고 sticky bit가 적용되어 있으면 참 |
| -L filename | 파일이 존재하고 심볼릭 링크면 참 |
| -p filename | 파일이 존재하고 named pipe 파일이면 참 |
| -r filename | 파일이 존재하고 읽기 권한이 있다면 참 |
| -w filename | 파일이 존재하고 쓰기 권한이 있다면 참 |
| -x filename | 파일이 존재하고 실행 권한이 있다면 참 |
| -s filename | 파일이 존재하고 파일크기가 0 byte 보다 크다면 참 |
| -S filename | 파일이 존재하고 Socket 파일이면 참 |
■ 문자열에 대한 조건
| 조건 | 설명 |
|---|---|
| 문자열1 = 문자열2 | 문자열1과 문자열2가 같다면 참 |
| 문자열1 != 문자열2 | 문자열1과 문자열2가 다르다면 참 |
| -z 문자열 | 문자열 길이가 0이라면 참 |
| -n 문자열 | 문자열 길이가 0이 아니라면 참 |
■ 숫자에 대한 조건
| 조건 | 설명 |
|---|---|
| N1 -eq N2 | N1과 N2의 숫자가 같다면 참 |
| N1 -ne N2 | N1과 N2의 숫자가 다르면 참 |
| N1 -ge N2 | N1이 N2보다 크거나 같다면 참 |
| N1 -gt N2 | N1이 N2보다 크다면 참 |
| N1 -le N2 | N1이 N2보다 작거나 같다면 참 |
| N1 -lt N2 | N1이 N2보다 작다면 참 |
02) expr 명령
정수 계산을 하기 위해 사용되는 명령
a) 명령 형식
expr 정수1 연산기호 정수2
| 연산자 | 설명 |
|---|---|
| + | 더하기 연산 |
| - | 빼기 연산 |
| * | 곱하기 연산 |
| / | 나누기 연산 |
| % | 나머지 연산 |
b) 예제
$ expr 1 + 2
3
$ expr 3 - 4
-1
$ expr 4 \* 3
12
$ expr 4 / 3
1
$ expr 4 % 3
1
$ A=`expr 1 + 2`
$ echo $A
3
03) bc 명령
expr 명령처럼 수치 연산을 하기 위해 사용되는 명령
-
expr은 bash 내장 명령어로 정수만 연산 가능하고, 연산 기호와 정수 사이에 반드시 공백을 두어야 한다.
-
bc는 복잡한 공학용 산술과 실수 계산이 가능하고, 산술식 뒤에 파이프라인 (|)으로 계산식을 넘겨서 처리한다.
| 연산자 | 설명 |
|---|---|
| + | 더하기 연산 |
| - | 빼기 연산 |
| * | 곱하기 연산 |
| / | 나누기 연산 |
| % | 나머지 연산 |
| scale=N | 소수점 자리수 |
a) 예제
$ echo '1+2' | bc
3
$ echo '3-4' | bc
-1
$ echo '4*3' | bc
12
$ echo '4/3' | bc
1
$ echo '4/3' | bc -l
1.33333333333333333333
$ echo 'scale=3;4/3' | bc -l
1.333
$ echo '4%3' | bc
1
댓글 남기기