EXPR
Section: Misc. Reference Manual Pages (1L)
Updated: GNU 쉘 유틸리티
Index
Return to Main Contents
이름
expr - 표현식 평가
개요
expr
표현식...
expr
{--help,--version}
설명
이 맨페이지는 GNU 버전의
expr
을 다룬다.
expr
표현식을 평가하고 그 결과값을 표준출력에 쓴다.
표현식의 각 표시는 별도의 인수로 주어져야 한다. 연산수(Operand)는 숫자 또는
문자열이다. 문자열은 쉘로부터 보호하기 위하여 인용부호로 둘러싸기(quote)가
필요할 모르지만 expr 에서는 그렇지 않다.
expr
는 연산행위에 따라 연산수 위치에 있는 것을 정수 또는 문자열로 강제 변환한다.
연산자는 다음과 같다(우선 순위 증가순에 따라 나열):
- |
-
첫번째 인수가 널 또는 0이 아니라면 첫번째 인수를 내주고 그렇지 않으면 두번째
인수를 내준다. `or' 연산에 해당한다.
- &
-
첫번째 인수가 널 또는 0이 아니라면 첫번째 인수를 내주고 그렇지 않으면
0을 내준다.
- < <= = == != >= >
-
주어진 인수를 비교하여 맞으면 1, 틀리면 0 을 반환한다.
(== 은 =와 같다.)
expr 은 양쪽 인수를 숫자로 변환하여 수치 비교를 한다;
한 쪽 변수라도 숫자 변환에 실패하면 사전식 비교를 수행한다.
- + -
-
수치 연산을 수행한다. 두 인수는 수치로 변환된다;
실패할 경우 에러가 발생한다.
- * / %
-
수치 연산을 수행한다( `%'은 C 언어에서처럼 나머지 연산이다).
두 인수는 숫자로 변환된다; 실패할 경우 에러가 발생한다.
- :
-
패턴 비교를 수행한다. 인수는 문자열로 변환되고 두번째 인수는 정규식으로
간주된다. 그리고 맨앞에 암묵적으로 `^' 을 추가한다.
첫번째 인수는 바로 이 정규식에 따라 비교된다.
비교가 성공하고 문자열의 일부가 `\(' 와 `\)'로 둘러싸여 있다면,
이 둘러싸인 부분이 : 표현식의 값이 된다. 아니면 비교에 성공한 문자의
갯수를 정수로 반환한다. 비교가 실패하면 : 연산자는 `\('와 `\)' 가
사용된 경우에는 널을 아니면 0 을 반환한다.
`\(' 와 `\)' 의 쌍은 단 한 번만 사용할 수 있다.
- 추가로 다음 예약어를 사용할 수 있다:
-
- match 문자열 정규식
-
패턴 비교를 할 수 있는 또 다른 방법이다. ``문자열 : 정규식''
와 같다.
- substr 문자열 위치 길이
-
문자열 중에서 위치로부터 최대 길이만큼의 문자열을 뽑아서
반환해준다. 만약 위치 또는 길이가 음수이거나 숫자가 아닐 때는
널 문자열을 반환한다.
- index 문자열 문자-클래스
-
문자열에서 문자-클래스가 처음으로 나타나는 위치를 반환한다.
문자-클래스의 어떤 문자도 문자열에서 찾을 수 없는 경우 0 이
반환된다.
- length 문자열
-
문자열의 길이를 반환한다.
괄호치기는 그룹묶기에 사용된다. 예약어는 문자열로 사용할 수 없다.
옵션
GNU
expr
이 단 하나의 인수로 실행되면 다음 옵션이 인식된다:
- --help
-
표준출력으로 사용법을 출력하고 정상적으로 종료한다.
- --version
-
표준출력으로 버전정보를 출력하고 정상적으로 종료한다.
예
쉘 변수에 1 을 더하기
a:
-
a=`expr $a + 1`
다음은 변수 안에 저장된 화일명에서 디렉토리 이름부분을 출력하는 예이다.
a
(
a
라는 값은 `/'를 포함할 필요없다):
-
expr $a : '.*/\(.*\)' '|' $a
따옴표 처리한(quoted) 쉘의 메타문자를 주목하기 바란다.
expr
은 다음과 같은 종료 상태를 반환한다:
0 표현식이 널이거나 0이 아닐 때
1 표현식이 널이거나 0일 때
2 잘못된 표현식
번역자
이 만 용
<geoman@nownuri.nowcom.co.kr>
<freeyong@soback.kornet.nm.kr>
Index
- 이름
-
- 개요
-
- 설명
-
- 옵션
-
- 예
-
- 번역자
-
This document was created by
man2html,
using the manual pages.
Time: 00:13:00 GMT, May 16, 2023