คุณสามารถค้นหาคำจำกัดความของ-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 ]
) ซึ่งไม่สามารถมีการเปลี่ยนเส้นทางภายในดังนั้นจึง<
ไม่จำเป็นต้องยกมา
echo
ข้อความในรหัสตอบคำถามของคุณ