유닉스 expr 명령은 정수를 비교하는 이상한 결과를 보여줍니다


2

내가 쓸 때

expr 123 \< 5  

expr이 2 개의 정수를 평가하므로 결과는 정확합니다 (0).
또한

expr 123. \< 5  

이제 두 문자열을 비교하기 때문에 예상 결과 (1)을 제공합니다.
그러나

expr "123" \< 5  

0을 준다 (전과 같이 1을 기대했다)
왜?

답변:


1
expr 123 \< 5

expr "123" \< 5

expr명령이 프로그램 인수에서 보는 것과 두 경우 모두 동일 하기 때문에 동일한 대답을 제공하십시오 . 인수 1, 2, 3은 123, <그리고 5두 경우 모두있다.

이것을보다 명확하게 보려면 /bin/echo대신 사용하십시오 expr.

이스케이프 및 인용은 쉘에서 처리합니다 . 한 번 실행 된 명령은 쉘이 모든 방향 재 지정, 확장 및 하위 자손을 처리하고 모든 인용을 제거한 명령 행이 끝나는 것 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.