เริ่มต้นด้วย bash: -lt และ -gt อาร์กิวเมนต์


24

ฉันเริ่มต้นด้วยทุบตีและฉันพบต่อไปนี้:

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มันใช้สำหรับการเปรียบเทียบจำนวนเต็มในทุบตี คุณสามารถอ่านเพิ่มเติมโดยพิมพ์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เหล่านี้เป็นผู้ประกอบการที่เป็นตัวเลขจึงจะมีข้อผิดพลาดถ้าทั้งสองข้างไม่เป็นตัวเลขและถือว่าน้อยกว่า910

ชื่อเหตุผลที่ชอบ-ltถูกนำมาใช้มากกว่าปกติ<คือตัวละคร<จะถูกตีความว่าเป็นการเปลี่ยนเส้นทาง ผู้ประกอบการ=และ!=ยังมีอยู่ แต่พวกเขาทำการเปรียบเทียบสตริง: test 00 -eq 0เป็นจริงในขณะที่test 00 = 0เป็นเท็จ

เชลล์บางตัวรวมถึง bash ยังมีโอเปอเรเตอร์<และ>ทำการเปรียบเทียบสตริงพจนานุกรมด้วยดังนั้นจึงtest 9 \< 10เป็นเท็จเพราะ9มีการเรียงลำดับก่อนหน้า1(แบ็กสแลชป้องกันอักขระ<จากการตีความว่าเป็นโอเปอเรเตอร์การเปลี่ยนเส้นทาง) เชลล์เหล่านี้ยังมีไวยากรณ์สองวงเล็บสำหรับการทดสอบเช่น[[ 9 < 10 ]](ตรงข้ามกับ[ 9 \< 10 ]) ซึ่งไม่สามารถมีการเปลี่ยนเส้นทางภายในดังนั้นจึง<ไม่จำเป็นต้องยกมา


4

พวกเขาเป็นเพียงผู้ประกอบการ

เพียง: gtและltหมายถึง> (มากกว่า) และ <(น้อยกว่า)

คุณสามารถดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับผู้ประกอบการ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.