System/OS
2014.03.11 11:12

[linux] 쉘스크립트 expr

조회 수 15710 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
쉘스크립트에서 변수에 대입된 값은 모두 문자열로 취급된다.
변수에 들어 있는 값을 숫자 형태로 사칙연산(+, -, *, /)을 하려면 expr 을 사용하면 된다.
이 때, 수식을 반드시 역따옴표(키보드 숫자 1 왼쪽 옆에 있는 ` 기호)로 묶어 주어야 한다.
수식에 괄호를 넣으려면 그 앞에 꼭 역슬래시(\)를 붙여 주어야 한다.
또한, +, -, / 와 달리 곱하기(*) 연산도 앞에 꼭 역슬래시(\)를 붙여 주어야 한다.
자.. 그럼 더 긴 설명은 제끼고 한번 해보자~

# 사용법
expr 수식 expr 옵션

다음은 expr 에서 지원하는 수식평가 포맷이다.
결과는 표준출력(:12) 된다.
# 양쪽 모두 0이면 0이 리턴된다.
ARG1 | ARG2

# 어느 한쪽이 0이면 0이 리턴된다. 그렇지 않다면 ARG1이 리턴
ARG1 & ARG2

# ARG1이 ARG2 보다 작으면 1, 그렇지 않다면 0
ARG1 < ARG2

# ARG1이 ARG2 보다 작거나 같으면 1, 그렇지 않다면 0
ARG1 <= ARG2

# ARG1과 ARG2 가 같으면 1, 그렇지 않다면 0
ARG1 = ARG2

# ARG1와 ARG2가 같으면 0, 다르면 1
ARG1 != ARG2

# ARG1이 ARG2 보다 크면 1, 그렇지 않다면 0
ARG1 > ARG2

# ARG1이 ARG2 보다 크거나 같다면 1, 그렇지 않다면 0
ARG1 >= ARG2

# ARG1과 ARG2를 더한다.
ARG1 + ARG2

# ARG1에서 ARG2를 뺀다.
ARG1 - ARG2

# ARG1와 ARG2를 곱한다.
ARG1 * ARG2

# ARG1을 ARG2로 나눈다.
ARG1 / ARG2

# ARG1을 ARG2로 나눈 나머지
ARG1 % ARG2

# CHARS가 STRING의 몇번째 위치에 있는지를 확인
index STRING CHARS

# STRING의 길이
length STRING

# STRING이 정규표현(:12) REGEXP를 만족하면 1
match STRING REGEXP

# 사용 예제
# expr 2 \= 2
# expr match "hello World 1234" "[a-zA-Z0-9]"
# expr index "hello World 1234" W
# expr length "hello world 1234"


다음은 쉘스크립트(:12)에서 사용한 예이다.

#!/bin/sh

INDEX=1
while [ $INDEX -lt 100 ]
do
        echo $INDEX;
        INDEX=`expr $INDEX \+ 1`
done

# expr 연산기호
+ : 더하기
- : 빼기
* : 곱하기('\*'로 사용)
/ : 나누기를 한 후의 몫의 값
% : 나누기를 한 후의 나머지 값

# 연산기호 사용 예제
#!/bin/sh

# 주의사항
# 1. 역따옴표(``)를 사용한다.
# 2. *연산자와 괄호'()' 앞에는 \(역슬래시)를 붙인다.
# 3. 모든 연산자와 숫자, 변수, 기호 사이네는 space가 있어야 한다.
# 4. = 사이에는 space가 있으면 안된다.

num=`expr 3 + 4 - 5`
echo $num
num2=`expr \( 3 \* 5 \) / 4 + 7`
echo $num2

#"$$"는 스크립트 파일이 실행되는 프로세스 번호를 나타낸다.
A=linux
echo "1. \$A 의 값은 $A이다."
echo "2. \$A 의 값은 $$A이다."
echo "3. \$A 의 값은 $$$A이다."
echo "4. \$A 의 값은 '$A'이다."
echo "5. \$A 의 값은 "$A"이다."

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
917 System/OS [owasp] 10대 웹어플리케이션 보안 취약 file hooni 2013.04.23 15993
916 System/OS 라우팅 경로 결정 영향 요소 ㅋㅋ file hooni 2013.04.23 15932
915 PPT [ppt] 웜 과제 진행사항(프레임워크 검증환경 구축) 보고 file hooni 2013.04.23 15931
914 Develop [ios] APNS 클라이언트 구현 (pdf) file hooni 2013.06.27 15833
913 Etc 영어의 12 시제 (The twelve tenses of English) hooni 2013.07.12 15794
912 Develop OGNL(Object Graph Navigation Language) hooni 2013.04.23 15777
911 System/OS [router] 설정과 기본 명령어들 모음 hooni 2013.04.23 15751
» System/OS [linux] 쉘스크립트 expr hooni 2014.03.11 15710
909 Develop [c] 윈도우 API sin 함수 출력.. file hooni 2013.04.23 15683
908 System/OS [linux] 종료와 종료코드 확인(환경변수에서) hooni 2003.04.23 15616
907 Develop [ios] UI컨트롤러 샘플코드 hooni 2013.08.08 15483
906 Develop [js] 수학 공식을 제공하는 Math 객체 hooni 2013.04.23 15436
905 Develop [c++] mfc 기반 레지스트리(registry) 컨트롤 예제 코드 2 hooni 2013.04.23 15368
904 Develop [android] 해상도 관련 팁 (dip -> pixel 변환) hooni 2013.04.23 15365
903 Database [mysql] 쿼리 로그 저장 매뉴얼 file hooni 2013.04.23 15363
902 Develop [java] 입출력 스트림 1부 (문자) file hooni 2013.04.23 15348
Board Pagination Prev 1 ... 15 16 17 18 19 ... 74 Next
/ 74