เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | เนื้อหา | ถัดไป>

การทดสอบเวอร์ชันที่ทันสมัยกว่า

เวอร์ชันล่าสุดของ ทุบตี รวมถึงคำสั่งผสมที่ทำหน้าที่เป็นการแทนที่ขั้นสูงสำหรับ ทดสอบ. มันใช้ไวยากรณ์ต่อไปนี้:

[[ การแสดงออก ]]

ที่ไหนเช่น ทดสอบ, การแสดงออก เป็นนิพจน์ที่ประเมินผลลัพธ์จริงหรือเท็จ NS [[]] คำสั่งคล้ายกับ .มาก ทดสอบ (รองรับทุกนิพจน์) แต่


เพิ่มนิพจน์สตริงใหม่ที่สำคัญ:

string1 =~ นิพจน์ทั่วไป

ซึ่งคืนค่าเป็นจริง if string1 ถูกจับคู่โดยนิพจน์ทั่วไปที่ขยายออก นิพจน์ทั่วไป. สิ่งนี้เปิดโอกาสมากมายสำหรับการทำงานเช่นการตรวจสอบข้อมูล ในตัวอย่างก่อนหน้าของนิพจน์จำนวนเต็ม สคริปต์จะล้มเหลวหากค่าคงที่ INT มีสิ่งใดยกเว้นจำนวนเต็ม สคริปต์ต้องการวิธีการตรวจสอบว่าค่าคงที่เป็นจำนวนเต็มหรือไม่ โดยใช้ [[]] กับ =~ ตัวดำเนินการนิพจน์สตริง เราสามารถปรับปรุงสคริปต์ด้วยวิธีนี้:



#! / bin / ทุบตี


# test-integer2: ประเมินค่าของจำนวนเต็ม


อินท์=-5


ถ้า [[ "$INT" =~ ^-?[0-9]+$ ]]; แล้ว

ถ้า [ $INT -eq 0 ]; จากนั้น echo "INT เป็นศูนย์"

อื่น

ถ้า [ $INT -lt 0 ]; จากนั้น echo "INT เป็นค่าลบ"

อื่น

echo "INT เป็นค่าบวก"

fi

ถ้า [ $((INT % 2)) -eq 0 ]; แล้วก้อง "INT เท่ากัน"

อื่น

echo "INT เป็นเลขคี่"

fi

fi

อื่น

echo "INT ไม่ใช่จำนวนเต็ม" >&2 ทางออก 1

fi

#! / bin / ทุบตี


# test-integer2: ประเมินค่าของจำนวนเต็ม


อินท์=-5


ถ้า [[ "$INT" =~ ^-?[0-9]+$ ]]; แล้ว

ถ้า [ $INT -eq 0 ]; จากนั้น echo "INT เป็นศูนย์"

อื่น

ถ้า [ $INT -lt 0 ]; จากนั้น echo "INT เป็นค่าลบ"

อื่น

echo "INT เป็นค่าบวก"

fi

ถ้า [ $((INT % 2)) -eq 0 ]; แล้วก้อง "INT เท่ากัน"

อื่น

echo "INT เป็นเลขคี่"

fi

fi

อื่น

echo "INT ไม่ใช่จำนวนเต็ม" >&2 ทางออก 1

fi


โดยการใช้นิพจน์ทั่วไป เราสามารถจำกัดค่าของ INT เฉพาะสตริงที่ขึ้นต้นด้วยเครื่องหมายลบ ตามด้วยตัวเลขอย่างน้อยหนึ่งตัว นิพจน์นี้ยังขจัดความเป็นไปได้ของค่าว่าง

คุณสมบัติเพิ่มเติมอีกประการของ [[]] คือว่า == โอเปอเรเตอร์รองรับรูปแบบการจับคู่แบบเดียวกับการขยายชื่อพาธ ตัวอย่างเช่น:



[me@linuxbox ~]$ FILE=foo.bar

[me@linuxbox ~]$ FILE=foo.bar

การทดสอบเวอร์ชันที่ทันสมัยกว่า


[me@linuxbox ~]$ ถ้า [[ $FILE == foo.* ]]; แล้ว

> echo "$FILE ตรงกับรูปแบบ 'foo.*'"

> fi

foo.bar ตรงกับรูปแบบ 'foo.*'

[me@linuxbox ~]$ ถ้า [[ $FILE == foo.* ]]; แล้ว

> echo "$FILE ตรงกับรูปแบบ 'foo.*'"

> fi

foo.bar ตรงกับรูปแบบ 'foo.*'


นี้จะทำให้ [[]] มีประโยชน์สำหรับการประเมินไฟล์และชื่อพาธ


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: