EXPR(1)

명칭
expr - 식을 평가한다

서식
expr expression

해설
expr (은)는, 주어진 식 expression (을)를 평가해, 그 결과를 표준 출력에 써냅니다.

expr (은)는, 식에서 사용되는 모든 연산자를 개별의 인수로서 취급합니다. 쉘이 특수 캐릭터라고 해석하는 것 같은 캐릭터는, 이스케이프 해 두지 않으면 되지 않습니다.

이하에, 사용할 수 있는 연산자를 우선도의 낮은 순서에 나타냅니다. 같은 우선도의 연산자는,{ } 그리고 괄은 있습니다.

expr1 | expr2
    expr1 하지만 하늘의 캐릭터 라인도 0 도 아닌 경우는 expr1 (을)를 평가한 결과를 돌려주어, 아주 없으면 expr2 (을)를 평가한 결과를 돌려줍니다.

expr1 & expr2
    expr1 (와)과 expr2 의 각각의 평가 결과가 ,함께 하늘의 캐릭터 라인도 0 도 아닌 경우는 expr1 (을)를 평가한 결과를 돌려주어, 아주 없으면 0 을 돌려줍니다.

expr1 {=, >, >=, <, <=, ! =} expr2
    expr1 (와)과 expr2 하지만 함께 정수라면 정수로서의 비교 결과를 돌려주어, 아주 없으면 캐릭터 라인으로 간주해, 로카르에 따른 조합 방법을 이용한 비교 결과를 돌려줍니다. 어느 경우도, 지정된 관계가 「진」이라면 1 을, 「가짜」라면 0 을 돌려줍니다.

expr1 {+, -} expr2
    정수치의 인수에 관해서, 가산 혹은 감산한 결과를 돌려줍니다.

expr1 {*, /, %} expr2
    정수치의 인수에 관해서, 곱셈, 정수 제산, 또는 잉여의 결과를 돌려줍니다.

expr1: expr2
    “”: 연산자는, expr1 (와)과 expr2 의 패턴 매치를 실시합니다. expr2 (은)는, 정규 표현이 아니면 안됩니다. 또 이 정규 표현은, 암묵중에 “^” 하지만 가정되는 것으로, 캐릭터 라인의 선두로부터 비교를 시작하는 것에 됩니다.

    패턴 매치가 성공했을 경우, 만약 정규 표현중에 적어도 1개 “\(...\)” 의 형태의 부분 정규 표현이 포함되어 있었다면, 이 중 “\1” 에 상당하는 캐릭터 라인을 돌려줍니다. 이러한 부분 정규 표현이 포함되지 않으면, 매치 한 캐릭터 라인의 길이를 돌려줍니다. 또 패턴 매치가 실패했을 경우, 만약 부분 정규 표현이 포함되어 있었다면 하늘의 캐릭터 라인을 돌려주어, 포함되지 않은 경우는 0 을 돌려줍니다.

환괄호 “()” (은)는 통상과 같이 그룹 나누기에 이용할 수가 있습니다.

사용예

1.  이하의 예는, 변수 a 에 1 을 더합니다.
        a=`expr $a + 1`

2.  이하의 예는, 변수 a 로 설정된 패스명 가운데, 파일명에 해당되는 부분을 돌려줍니다. 캐릭터 라인 // 은, 제산 연산자와의 혼동을 막기 위해서(때문에) 이용합니다.
        expr //$a: '. */\(. *\)'

3.  이하의 예는, 변수 a 에 포함되는 캐릭터의 수를 돌려줍니다.
        expr $a: '. *'

진단
expr 유틸리티는, 이하의 값중 1개를 돌려주어 종료합니다.
0   식은 공문자열도 0 도 아니다
1   식은 공문자열인가, 0 이었다
2   식이 무효였다

관련 항목
sh(1), test(1)

표준
expr 유틸리티는 p1003.2 준거입니다.