Починаючи з 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

Ви можете знайти визначення -ltта -gtв документації testкоманди ( man test) або в документації bash, оскільки testце вбудована команда в bash (як і в більшості інших оболонок).

-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

Вони просто оператори.

Просто: gtі ltозначає> (більше, ніж) і <(менше, ніж).

Ви можете подивитися тут для отримання додаткової інформації про операторів:


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.