Android

วิธีเปรียบเทียบสตริงใน bash

Bash scripting tutorial: Creating a basic Bash script | lynda.com

Bash scripting tutorial: Creating a basic Bash script | lynda.com

สารบัญ:

Anonim

เมื่อเขียนสคริปต์ Bash คุณมักจะต้องเปรียบเทียบสองสตริงเพื่อตรวจสอบว่ามีค่าเท่ากันหรือไม่ สองสตริงมีค่าเท่ากันเมื่อมีความยาวเท่ากันและมีลำดับอักขระเหมือนกัน

บทช่วยสอนนี้อธิบายวิธีเปรียบเทียบสตริงใน Bash

ผู้ประกอบการเปรียบเทียบ

ตัวดำเนินการเปรียบเทียบคือตัวดำเนินการที่เปรียบเทียบค่าและส่งคืนจริงหรือเท็จ เมื่อเปรียบเทียบสตริงใน Bash คุณสามารถใช้โอเปอเรเตอร์ต่อไปนี้:

  • string1 = string2 และ string1 == string2 - ตัวดำเนินการความเท่าเทียมจะคืนค่าจริงถ้าตัวถูกดำเนินการเท่ากัน
    • ใช้ตัวดำเนินการ = ด้วยการ test ; then echo "Strings are equal." else echo "Strings are not equal." fi

      เมื่อรันสคริปต์มันจะพิมพ์ผลลัพธ์ต่อไปนี้

      Strings are equal.

      นี่คือสคริปต์อื่นที่รับอินพุตจากผู้ใช้และเปรียบเทียบสตริงที่กำหนด ในตัวอย่างนี้เราจะใช้ ]; then echo "Strings are equal." else echo "Strings are not equal." fi ]; then echo "Strings are equal." else echo "Strings are not equal." fi

      รันสคริปต์และป้อนสตริงเมื่อได้รับพร้อมต์:

      Enter first string: Linuxize Enter second string: Ubuntu Strings are not equal.

      คุณสามารถใช้ตรรกะและ && และหรือ || เพื่อเปรียบเทียบสตริง:

      ] && echo "Equal" || echo "Not equal"

      Not equal

      ตรวจสอบว่าสตริงมีสตริงย่อยหรือไม่

      มีหลายวิธีในการตรวจสอบว่าสตริงมีสตริงย่อยหรือไม่

      วิธีการหนึ่งคือใช้ล้อมรอบสตริงย่อยด้วยสัญลักษณ์ดอกจัน * ซึ่งหมายถึงจับคู่อักขระทั้งหมด

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      สคริปต์จะดังต่อไปนี้:

      It's there.

      ตัวเลือกอื่นคือใช้ตัวดำเนินการ regex =~ ดังที่แสดงด้านล่าง:

      #!/bin/bash VAR='GNU/Linux is an operating system' if]; then echo "It's there." fi

      ระยะเวลาตามด้วยเครื่องหมายดอกจัน .* ตรงกับศูนย์หรือมากกว่าเกิดขึ้นอักขระใด ๆ ยกเว้นอักขระขึ้นบรรทัดใหม่

      ตรวจสอบว่าสตริงว่างเปล่า

      บ่อยครั้งที่คุณจะต้องตรวจสอบว่าตัวแปรเป็นสตริงว่างหรือไม่ คุณสามารถทำได้โดยใช้ตัวดำเนินการ -n และ -z

      #!/bin/bash VAR='' if]; then echo "String is empty." fi

      String is empty.

      #!/bin/bash VAR='Linuxize' if]; then echo "String is not empty." fi

      String is not empty.

      การเปรียบเทียบสตริงกับ Case Operator

      แทนที่จะใช้ตัวดำเนินการทดสอบคุณสามารถใช้คำสั่ง case เพื่อเปรียบเทียบสตริง:

      #!/bin/bash VAR="Arch Linux" case $VAR in "Arch Linux") echo -n "Linuxize matched";; Fedora | CentOS) echo -n "Red Hat";; esac

      Linuxize matched.

      การเปรียบเทียบพจนานุกรม

      การเปรียบเทียบคำศัพท์เป็นการดำเนินการที่สองสตริงถูกเปรียบเทียบตามตัวอักษรโดยการเปรียบเทียบอักขระในสตริงตามลำดับจากซ้ายไปขวา การเปรียบเทียบแบบนี้ไม่ค่อยได้ใช้

      สคริปต์ต่อไปนี้เปรียบเทียบสองสตริงตามพจนานุกรม:

      #!/bin/bash VAR1="Linuxize" VAR2="Ubuntu" if]; then echo "${VAR1} is lexicographically greater then ${VAR2}." elif]; then echo "${VAR2} is lexicographically greater than ${VAR1}." else echo "Strings are equal" fi

      สคริปต์จะแสดงผลลัพธ์ต่อไปนี้:

      Ubuntu is lexicographically greater than Linuxize.

      ข้อสรุป

      การเปรียบเทียบสตริงเป็นหนึ่งในการดำเนินงานขั้นพื้นฐานและที่ใช้บ่อยที่สุดในการเขียนสคริปต์ Bash หลังจากอ่านบทช่วยสอนนี้คุณควรมีความเข้าใจวิธีเปรียบเทียบสตริงใน Bash เป็นอย่างดี นอกจากนี้คุณยังสามารถตรวจสอบคำแนะนำของเราเกี่ยวกับการต่อสตริง

      bash terminal