bash로 시작 : -lt 및 -gt 인수


24

나는 bash로 시작하고 다음을 발견했다.

if test $first -lt $second
then
  echo $first is lower than $second
else
  if test $first -gt $second
  then
    echo $first is higher than $second
  else
    echo $first and $second are equals
  fi
fi

스크립트를 읽고 실행하기 위해 -lt와 -gt가 무엇인지 알지 못합니다.

누군가가 그런 종류의 '도구'의 이름과 그들이 무엇을하는지 말해 줄 수 있습니까 (-lt 및 -gt)? 감사!


9
죄송하지만 echo코드 의 문장이 귀하의 질문에 답변 한다고 지적 할 가치가 있습니다.
devnull

변수 주위에 따옴표가 없습니다
Stéphane Chazelas

답변:


29

less than및 의 줄임말입니다 greater than. bash에서 정수 비교에 사용됩니다. 다음을 입력하여 자세한 내용을 읽을 수 있습니다 man test.

   ....
   INTEGER1 -gt INTEGER2
          INTEGER1 is greater than INTEGER2
   ....
   INTEGER1 -lt INTEGER2
          INTEGER1 is less than INTEGER2
   ....

7

bash 의 내장 명령 이므로 (대부분의 다른 쉘에서와 같이 ) 명령 의 정의 -lt-gt설명서 ( ) 또는 bash 설명서에서 찾을 수 있습니다 .testman testtest

-lt-gt숫자 비교하다 (보다 작음이 [아니라 동일한,보다 큰 [같지 않음). 또한 이하 / 이상 또는 동등 사업자가 있습니다 -le-ge, 평등과 같지 않음 사업자 -eq-ne. 이들은 숫자 연산자이므로 양쪽이 숫자가 아니고 9보다 작은 것으로 간주 되면 오류가 발생합니다 10.

-lt평소 <가 아닌 이름 이 사용되는 이유 는 문자 <가 리디렉션으로 해석되기 때문입니다. 연산자는 =!=도 존재하지만, 그들은 문자열 비교 수행 test 00 -eq 0하는 반면 참 test 00 = 0거짓을.

bash를 포함한 일부 쉘에는 연산자가 <있으며 >문자열 사전 비교를 수행하므로 이전에 정렬되어 test 9 \< 10있기 때문에 거짓 9입니다 1(역 슬래시는 문자 <가 리디렉션 연산자로 해석되지 않도록합니다 ). 이 포탄은 또한 예를 들어 시험을위한 이중 브라켓 구문 제공 [[ 9 < 10 ]](반대로 [ 9 \< 10 ]이 때문에 내부 리디렉션 할 수 없습니다), <인용 될 필요하지 않습니다.


4

그들은 단지 운영자입니다.

간단히 : gtlt평균> (이상) 및 <(미만).

당신은 볼 수 여기 연산자에 대한 자세한 정보 :


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