ये कà¥?या है जानकार आपके à¤à¥€ पसीने छà¥?ट ज
สารบัญ:
หนึ่งในการดำเนินการที่พบบ่อยที่สุดเมื่อทำงานกับสตริงใน Bash คือการพิจารณาว่าสตริงมีสตริงอื่นหรือไม่
เราจะแสดงให้คุณเห็นหลายวิธีในการตรวจสอบว่าสตริงมีสตริงย่อยหรือไม่
ใช้สัญลักษณ์แทน
วิธีที่ง่ายที่สุดคือล้อมรอบสตริงย่อยด้วยสัญลักษณ์ดอกจัน (สัญลักษณ์ดอกจัน)
*
และเปรียบเทียบกับสตริง สัญลักษณ์แทนคือสัญลักษณ์ที่ใช้แทนศูนย์หนึ่งตัวอักษรหรือมากกว่านั้น
หากการทดสอบส่งคืน
true
สตริงย่อยจะอยู่ในสตริง
ในตัวอย่างด้านล่างเราใช้คำสั่ง if และตัวดำเนินการเท่าเทียมกัน (
==
) เพื่อตรวจสอบว่าพบซับสตริง
SUB
ภายในสตริง
STR
:
#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi
เมื่อดำเนินการสคริปต์จะส่งออก:
การใช้ตัวดำเนินการเคส
แทนที่จะใช้คำสั่ง if คุณยังสามารถใช้คำสั่ง case เพื่อตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่
#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' case $STR in *"$SUB"*) echo -n "It's there.";; esac
การใช้ Regex Operator
ตัวเลือกอื่นเพื่อตรวจสอบว่าสตริงย่อยที่ระบุเกิดขึ้นภายในสตริงหรือไม่คือการใช้ตัวดำเนินการ regex
=~
เมื่อใช้โอเปอเรเตอร์นี้สตริงที่ถูกต้องจะถือเป็นนิพจน์ทั่วไป
ระยะเวลาตามด้วยเครื่องหมายดอกจัน
.*
ตรงกับศูนย์หรือมากกว่าเกิดขึ้นอักขระใด ๆ ยกเว้นอักขระขึ้นบรรทัดใหม่
#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi
สคริปต์จะดังต่อไปนี้:
ใช้ Grep
คำสั่ง grep ยังสามารถใช้เพื่อค้นหาสตริงในสตริงอื่น
ในตัวอย่างต่อไปนี้เรากำลังส่งสตริง
$STR
เป็นอินพุตไปยัง grep และตรวจสอบว่าพบสตริง
$SUB
ภายในสตริงอินพุตหรือไม่ คำสั่งจะส่งคืน
true
หรือ
false
ตามความเหมาะสม
#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if grep -q "$SUB" <<< "$STR"; then echo "It's there" fi
อ็อพชัน
-q
บอกให้ grep อยู่ในโหมดเงียบเพื่อตัดเอาต์พุต
ข้อสรุป
การตรวจสอบว่าสตริงมีสตริงย่อยเป็นหนึ่งในการดำเนินงานขั้นพื้นฐานและที่ใช้บ่อยที่สุดในการเขียนสคริปต์ Bash
หลังจากอ่านบทช่วยสอนนี้คุณควรมีความเข้าใจอย่างดีเกี่ยวกับวิธีทดสอบว่าสตริงมีสตริงอื่นหรือไม่ คุณยังสามารถใช้คำสั่งอื่น ๆ เช่น
awk
หรือ
sed
สำหรับการทดสอบ