ฉันกำลังเขียนสคริปต์ทุบตีและทันใดนั้นพฤติกรรมนี้ก็เริ่มต้น:
[[ 1 < 2 ]]; echo $? # outputs 0
[[ 2 < 13 ]]; echo $? # outputs 1
แต่ใช้-lt
งานได้ดี:
[[ 1 -lt 2 ]]; echo $? # outputs 0
[[ 2 -lt 13 ]]; echo $? # outputs 0
ฉันเขียนทับ<
อย่างใดโดยบังเอิญหรือไม่?
นี่คือสคริปต์ที่ฉันเขียนเพื่อทดสอบพฤติกรรมนี้:
#!/bin/bash
for a in {1..5}
do
for b in {1..20}
do
[[ $a < $b ]] && echo $a $b
done
echo
done
นี่คือผลลัพธ์:
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 20
3 4
3 5
3 6
3 7
3 8
3 9
4 5
4 6
4 7
4 8
4 9
5 6
5 7
5 8
5 9
การเปลี่ยนแปลง<
ไป-lt
ในสคริปต์ช่วยให้การส่งออกปกติ ( 5 10
แสดงให้เห็นถึงตัวอย่าง)
การรีบูตเครื่องไม่ได้เปลี่ยนแปลงอะไรเลย
รุ่น bash ของฉันคือ GNU bash, รุ่น 4.3.42 (1) - ปล่อย (x86_64-pc-linux-gnu) ฉันใช้ Ubuntu 15.10 ฉันไม่ทราบว่ามีข้อมูลอื่นใดที่เกี่ยวข้องที่นี่
<
การดำเนินการคุณจะทำการเปรียบเทียบสตริงในขณะที่-lt
ผู้ประกอบการคือการเปรียบเทียบตัวเลขถ้าคุณดูผลลัพธ์ที่คุณได้ระบุไว้คุณจะตระหนักถึงมัน ตัวเลข 2 น้อยกว่า 10 ตามลำดับตัวอักษรและอีกวิธีหนึ่ง