Bắt đầu với các đối số bash: -lt và -gt


24

Tôi đang bắt đầu với bash và tôi đã tìm thấy như sau:

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

Để đọc kịch bản và thực thi nó, tôi biết nó làm gì, nhưng không phải là -lt và -gt để làm gì.

Ai đó có thể cho tôi biết tên của loại 'công cụ' đó là gì và họ (-lt và -gt) làm gì không? Cảm ơn!


9
Xin lỗi, nhưng tôi cảm thấy đáng để chỉ ra rằng các echotuyên bố trong mã trả lời câu hỏi của bạn.
devnull

Có những trích dẫn bị thiếu xung quanh các biến
Stéphane Chazelas

Câu trả lời:


29

Nó là viết tắt của less thangreater than. Nó được sử dụng để so sánh số nguyên trong bash. Bạn có thể đọc thêm bằng cách gõ man test:

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

7

Bạn có thể tìm thấy định nghĩa -lt-gttrong tài liệu của testlệnh ( man test) hoặc trong tài liệu về bash vì đây testlà lệnh tích hợp trong bash (giống như trong hầu hết các shell khác).

-lt-gtlà so sánh số (nhỏ hơn [và không bằng], lớn hơn [và không bằng]). Ngoài ra còn có các toán tử ít hơn / lớn hơn hoặc bằng nhau , -levà các toán tử -gebằng và không bằng nhau -eq-ne. Đây là các toán tử số, do đó sẽ có lỗi nếu một trong hai bên không phải là số và 9được coi là nhỏ hơn 10.

Các tên lý do như -ltđược sử dụng thay vì thông thường <là ký tự <sẽ được hiểu là một chuyển hướng. Các toán tử =!=cũng tồn tại, nhưng chúng thực hiện so sánh chuỗi: test 00 -eq 0đúng trong khi đó test 00 = 0là sai.

Một số shell, bao gồm bash, cũng có các toán tử <>thực hiện so sánh từ điển chuỗi, vì vậy test 9 \< 10là sai vì 9được sắp xếp trước 1(dấu gạch chéo ngược ngăn ký tự <được hiểu là toán tử chuyển hướng). Các shell này cũng cung cấp cú pháp ngoặc kép cho các thử nghiệm, ví dụ [[ 9 < 10 ]](trái ngược với [ 9 \< 10 ]), không thể có các chuyển hướng bên trong để <không cần trích dẫn.


4

Họ chỉ là những người điều hành.

Đơn giản: gtltcó nghĩa là> (lớn hơn) và <(nhỏ hơn).

Bạn có thể xem tại đây để biết thêm thông tin về các nhà khai thác:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.