EXPR(1L)

이름
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>