| HOME / 정보공유 / AIX 명령어 모음

expr
expr expr 명령 목적 인수를 표현식으로 평가합니다. 구문
expr Expression
설명
expr 명령은 Expression 매개변수를 읽어 평가한 후, 그 결과를 표준 출력에 기록합니다.
Expression 매개변수에 다음과 같은 규칙을 적용해야 합니다.
각 항목을 공백으로 분리하십시오.
\(백슬래쉬)를 갖는 쉘 앞에 특수 문자를 선행시키십시오.
공백 또는 기타 특수 문자가 들어 있는 문자열은 인용부호로 묶으십시오.
정수 앞에 하나의 하이픈이 올 수 있습니다. 내부적으로, 정수는 32 비트, 2의 보수로서 간주됩니다.
주: expr 명령은 영(0) 값을 표시하기 위해 널(null) 문자열이 아닌 0을 리턴합니다.
다음 항목은 Expression 매개변수의 연산자 및 키워드를 설명합니다. 에스케이프시켜야 할 문자 앞에는 \(백슬래쉬)가 와야 합니다. 항목은 선행이 증가하는 순서로 나열하며 선행이 동등한 연산자는 {}(중괄호)로 묶어 줍니다.
Expression1\| Expression2 널(null) 값 또는 0 값이 아닌 경우, Expression1을 리턴하고 그렇지 않을 경우, Expression2를 리턴합니다.
Expression1\&Expression2 두 표현식 모두 널 값 또는 0 값이 아닌 경우, Expression1을 리턴하고, 모두 널(null)이거나 0인 경우에 값 0을 리턴합니다.
Expression1{ =, \>, \>=, \<, \<=, != }Expression2 두 표현식 모두 정수일 경우, 정수 비교 결과를 리턴하고, 그렇지 않을 경우에는 문자열 비교 결과를 리턴합니다.
Expression1 {+, - }Expression2 정수 값 인수를 더하거나 뺍니다.
Expression1 { \*, /, % }Expression2 정수 값 인수를 곱하거나 나누고 또는 나눗셈에서 나머지를 제공합니다.
Expression1 : Expression2 Expression1의 평가에서 작성되는 결과 문자열을 Expression2 평가로 작성되는 정규식 패턴과 비교합니다. 정규식 구문은, 모든 패턴이 문자열의 시작 부분에 앵커된다는 점(즉, 문자열의 첫번째 문자에서 시작하는 순서만 정규식에 의해 대응됨)을 제외하고는 ed 명령과 구문과 같습니다. 따라서, ^는 이 구문에서는 특수 문자가 아닙니다.
일반적으로 대응 연산자는 대응된 문자 수(실패하면 0)를 리턴합니다. 다음 예에서와 같이 패턴에 부속표현식이 포함되는 경우,
\( Expression \)
실제의 대응된 문자를 포함하는 문자열을 리턴합니다.
배열 순서는 문자 범위에 사용할 등가 클래스를 정의할 수 있습니다. 배열 순서 또는 등가 클래스에 대한 자세한 사항은 AIX 5L Version 5.1 System Management Concepts: Operating System and Devices의 "Understanding locale environment variable"을 참조하십시오.
주: 다음 문자열 인수는 표준을 넘는 확장 인수로 운영 시스템에 따라 다른 역할을 할 수 있습니다. 이 문자열 인수는 이동할 수 없습니다.
matchString1String2 Expression2 : Expression1과 같습니다.
lengthString1 String1의 길이를 리턴합니다.
indexString1String2 String1에서 String2의 문자가 존재하는 첫번째 위치를 리턴합니다.
substrString1StartPositionLength
String1의 SartPosition에 있는 문자로 시작하여 Length에 지정한 만큼의 문자를 리턴합니다.
종료 상태
이 명령은 다음 종료 값을 리턴합니다.
0 Expression 매개변수는 널(null) 또는 0 값을 평가하지 않습니다.
1 Expression 매개변수는 널(null) 또는 0 값을 평가합니다.
2 Expression 매개변수가 유효하지 않습니다.
>2 오류가 발생했습니다.
주: 쉘이 매개변수를 처리한 후, expr 명령이 값에 의하지 않고는 연산자와 피연산자를 구별할 수 없습니다. 따라서, $a의 값이 j이면, 다음 명령의 경우,
expr $a = j
다음과 같이 나타납니다.
expr j = j
(위의 명령은 쉘이 인수를 expr 명령에 전달한 후에 나타납니다). 다음과 같은 경우도 참입니다.
expr X$a = Xj
예제
쉘 변수를 수정하려면, 다음과 같이 입력하십시오.
COUNT=`expr $COUNT + 1`
이것은 1을 쉘 변수 $COUNT에 추가합니다. expr 명령은 액센트 기호로 묶여, 쉘이 expr 명령으로부터의 표준 출력을 COUNT= 명령의 표준 출력으로 대체하도록 합니다. $COUNT 변수는 사용하기 전에 초기화해야 합니다.
$STR 쉘 변수의 길이를 찾으려면, 다음과 같이 입력하십시오.
LENGTH=`expr $STR : ".*"`
이것은 LENGTH 변수를 :(콜론) 연산자가 제공하는 값으로 설정합니다. 패턴 .*는 시작부분에서 끝부분까지 모든 문자열을 대응시키므로, 콜론 연산자는 대응된 문자 수로 $STR 변수 길이를 제공합니다. .*를 인용부호로 묶어야 쉘이 *(별표)를 패턴 대응 문자로 취급하지 않는 것에 유념하십시오. 인용부호는 패턴의 부분이 아닙니다.
$STR 변수를 널 문자열로 설정하거나 또는 이 변수에 공백 문자(공백 또는 탭)가 있으면, 이 명령은 오류 메세지 expr: 구문 오류를 표시합니다. 이것은 쉘이 정상적으로는 널 문자열을 명령에 전달하지 않기 때문에 일어납니다. 이 경우, expr 명령은 다음 사항을 표시합니다.
:.*
쉘은 또한 작은따옴표도 제거합니다. 콜론 연산자에는 두 개의 값이 필요하므로, 이것은 효력이 없습니다. 다음과 같이 쉘 변수를 큰따옴표로 묶으면 문제점이 해결됩니다.
LENGTH=`expr "$STR" : ".*"`
이제 $STR 변수의 값이 널이면, LENGTH 변수가 값 0으로 설정됩니다. 일반적으로 쉘 변수를 큰따옴표로 묶는 것이 바람직합니다. 쉘 변수를 작은따옴표로 묶지 마십시오.
문자열의 부분을 사용하려면, 다음과 같이 입력하십시오.
FLAG=`expr "$FLAG" : "-*\(.*\)"`
이것은 $FLAG 쉘 변수에 선행 하이픈이 있는 경우에 하이픈을 제거합니다. 콜론 연산자는 FLAG 변수 중에서 \( 및 \) 문자(백슬래쉬, 왼쪽 괄호 및 백슬래쉬, 오른쪽 괄호) 사이에 묶인 부속표현식에 의해 대응되는 부분을 제공합니다. \( 및 \) 부속표현식 문자를 생략하면, 콜론 연산자는 대응된 문자 수를 제공합니다.
$FLAG 변수를 -(하이픈)으로 설정할 경우, 이 명령은 구문 오류 메세지를 표시합니다. 이는 쉘이 $FLAG 변수의 값을 expr 명령을 수행하기 전에 교체하기 때문에 발생합니다. expr 명령은 하이픈이 변수의 값이라는 것을 알지 못합니다. 이 명령은 다음만을 알 수 있습니다.
- : -*\(.*\)
첫번째 하이픈을 빼기 연산자로 해석합니다. 이 문제점을 제거하려면 다음과 같이 사용하십시오.
FLAG=`expr "x$FLAG" : "x-*\(.*\)"`
expr 명령을 if 문에서 사용하려면, 다음과 같이 입력하십시오.
if expr "$ANSWER" : "[yY]" >/dev/null
then
echo ANSWER begins with "y" or "Y"
fi
$ANSWER 변수가 y 또는 Y로 시작하면, if 문의 then 부분이 수행됩니다. 대응에 성공하면, 표현식의 결과는 1이고 expr 명령은 종료 값 0을 리턴하며, 이 값은 if 문에 의해 논리적 참값으로 인식됩니다. 대응에 실패하면, 결과는 0이고 종료 값은 1(거짓)입니다.
expr 명령의 표준 출력의 방향을 /dev/null 특수 파일로 재지정하면, 표현식의 결과가 삭제됩니다. 방향을 재지정하지 않으면, 결과는 일반적으로 워크스테이션 표시장치인 표준 출력에 기록됩니다.
다음 표현식을 살펴보십시오.
expr "$STR" = "="
$STR 변수에 값으로 =(등호)가 있으면, 쉘이 이 명령을 처리한 다음, expr 명령이 다음 표현식을 보게 됩니다.
= = =
expr 명령은 이것을 한 행에 있는 세 개의 = 연산자로 해석하여 구문 오류 메세지를 표시합니다. 이는 쉘 변수의 값이 expr 연산자 중 하나와 값이 같을 때마다 발생합니다. 표현식을 다음과 같이 분석하면 이를 방지할 수 있습니다.
expr "x$STR" = "x="
$SHELL 환경 변수, /usr/bin/ksh의 길이를 리턴하려면, 다음을 입력하십시오.
expr length $SHELL
다음 결과가 표시됩니다.
12
문자열 "de"의 문자가 "abcdef"에서 발견되는 곳의 첫번째 위치를 리턴하려면, 다음과 같이 입력하십시오.
expr index abcdef de
다음 결과가 표시됩니다.
4
문자열 "fd"의 문자가 "abcdef"에서 발견되는 곳의 첫번째 위치를 리턴하려면, 다음과 같이 입력하십시오.
expr index abcdef fd
다음 결과가 표시됩니다.
4
문자열 "Goodnight Ladies"에 대해 위치 11에서 시작하고 길이 6인 문자열을 리턴하려면, 다음과 같이 입력하십시오.
expr substr "Goodnight Ladies" 11 6
다음 결과가 표시됩니다.
Ladies
파일
/usr/bin/expr expr 명령을 포함합니다.
관련 정보
bsh 명령, csh 명령, ed 명령, ksh 명령.