ฉันแฮ็คสคริปต์เชลล์จำนวนมากและบางครั้งสิ่งที่ง่ายที่สุดก็ทำให้ฉันยุ่งเหยิง วันนี้ฉันพบสคริปต์ที่ใช้:
ทุบตี (โคลอน) builtin อย่างกว้างขวาง
Documenationดูเหมือนว่าพอง่าย:
: (a colon) : [arguments]
อย่าทำอะไรเลยนอกเหนือจากการขยายข้อโต้แย้งและทำการเปลี่ยนเส้นทาง สถานะการส่งคืนเป็นศูนย์
อย่างไรก็ตามก่อนหน้านี้ฉันเคยเห็นสิ่งนี้ใช้ในการสาธิตการขยายตัวของเชลล์ กรณีการใช้งานในสคริปต์ที่ฉันวิ่งข้ามได้ใช้โครงสร้างนี้อย่างกว้างขวาง:
if [ -f ${file} ]; then
grep some_string ${file} >> otherfile || :
grep other_string ${file} >> otherfile || :
fi
จริง ๆ แล้วมีหลายร้อย greps แต่พวกเขาก็เหมือนกัน ไม่มีการเปลี่ยนทิศทางอินพุต / เอาต์พุตนอกเหนือจากโครงสร้างอย่างง่ายด้านบน ไม่มีการตรวจสอบค่าส่งคืนในสคริปต์
ฉันกำลังอ่านสิ่งนี้เป็นสิ่งก่อสร้างที่ไร้ประโยชน์ที่ระบุว่า "หรือไม่ทำอะไรเลย" มีจุดประสงค์อะไรที่จะจบ greps เหล่านี้ด้วย "หรือไม่ทำอะไร" รับใช้? โครงสร้างนี้จะทำให้เกิดผลลัพธ์ที่แตกต่างไป|| :
จากในทุกกรณีหรือไม่?
:
true
อาจerrexit
มีการตั้งค่าไว้และผู้เขียนไม่สนใจสถานะการออกของบางคำสั่ง