Skip to main content

คู่มือเริ่มต้นใช้งานกับ BASH - เปรียบเทียบสิ่งต่างๆ

:

Anonim
01 จาก 08

คู่มือเริ่มต้นใช้งานกับ BASH - เปรียบเทียบสิ่งต่างๆ

ในส่วนก่อนหน้าของการกวดวิชา BASH เราดูที่ข้อความเงื่อนไข

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

ภาพด้านบนแสดงตัวอย่างแรกในคู่มือในสัปดาห์นี้:

#! / bin / ทุบตีname1 = "แกรี่"name2 = "บ๊อบ"หาก "$ name1" = "$ name2"แล้วก็ echo "ชื่อตรงกัน"อื่น echo "ชื่อไม่ตรงกัน"Fi

ในสคริปต์ด้านบนฉันได้กำหนดตัวแปรสองตัวที่ชื่อ name1 และ name2 และกำหนดค่า "gary" และ "bob" เนื่องจากตัวแปรมีอยู่ระหว่างเครื่องหมายคำพูดพวกเขาเรียกว่าตัวแปรสตริงซึ่งมีความเกี่ยวข้องมากขึ้นเมื่อการสอนทำขึ้น

สคริปต์ทั้งหมดจะเปรียบเทียบค่าของ $ name1 และ $ name2 และหากตรงกับผลลัพธ์สตริง "ชื่อตรงกัน" และหากไม่ได้ส่งออกสตริง "ชื่อไม่ตรงกัน"

เครื่องหมายอัญประกาศรอบตัวแปร $ name1 และ $ name2 มีความสำคัญเนื่องจากหากค่าของค่าใด ๆ ยังไม่ได้ตั้งค่าไว้สคริปต์จะยังคงทำงานอยู่

ตัวอย่างเช่นถ้าไม่มีชื่อ $ name1 คุณจะเปรียบเทียบ "" กับ "bob" หากไม่มีเครื่องหมายอัญประกาศคุณจะทิ้ง = "bob" ไว้อย่างชัดเจน

นอกจากนี้คุณยังสามารถใช้! = notation เพื่อกำหนดค่าไม่เท่ากับดังนี้:

หาก "$ name1"! = "$ name2" 02 จาก 08

คู่มือเริ่มต้นใช้งานกับ BASH - เปรียบเทียบสตริง

ในตัวอย่างข้างต้นการทดสอบเปรียบเทียบสองสตริงและถามคำถามว่า Gary มาก่อน Bob ในตัวอักษรหรือไม่?

เห็นได้ชัดว่าคำตอบคือไม่

สคริปต์แนะนำผู้ให้บริการน้อยกว่า (<) เนื่องจากโอเปอเรเตอร์น้อยกว่าจะใช้สำหรับการเปลี่ยนเส้นทางคุณต้องหนีด้วยเครื่องหมายทับ () เพื่อให้มีค่าเฉลี่ยน้อยกว่าซึ่งเป็นเหตุผลว่าทำไมในสคริปต์ด้านบนจึงเปรียบเทียบ "$ name1" <"$ name2"

ตรงกันข้ามน้อยกว่าจะเห็นได้ชัดกว่า แทนที่จะใช้ <use >

ตัวอย่างเช่น

หาก "$ name1" "" $ name2 " 03 จาก 08

คู่มือเริ่มต้นใช้งานกับ BASH - เปรียบเทียบสตริง

ถ้าคุณต้องการทดสอบว่าตัวแปรมีค่าคุณสามารถใช้การทดสอบต่อไปนี้ได้หรือไม่:

ถ้า -n $ name2

ในสคริปต์ด้านบนฉันได้ทดสอบว่าชื่อ $ name2 ได้รับค่าหรือไม่ถ้าข้อความ "ไม่มี Bob ไม่เคยมี Bob ปรากฏ"

04 จาก 08

คู่มือเริ่มต้นใช้งานกับ BASH - เปรียบเทียบสตริง

ในสไลด์ที่ผ่านมาเราได้กล่าวถึงว่ามีการตั้งค่าตัวแปรหรือไม่ บางครั้งอาจมีการตั้งค่าตัวแปร แต่อาจไม่มีค่าจริง

ตัวอย่างเช่น

name1 = ""

หากต้องการทดสอบว่าตัวแปรมีค่าหรือไม่ (เช่นมีความยาวเป็นศูนย์) ให้ใช้ -z ดังนี้:

ถ้า -z $ name1

ในสคริปต์ข้างต้นฉันได้ตั้ง $ name1 เป็นสตริงความยาวเป็นศูนย์และเปรียบเทียบแล้วโดยใช้ -z ถ้าชื่อ $ name1 มีความยาวเป็นศูนย์ข้อความ "gary ออกไปตอนเย็น" จะปรากฏขึ้น

05 จาก 08

คู่มือเริ่มต้นใช้กับ BASH - เปรียบเทียบตัวเลข

ดังนั้นการเปรียบเทียบทั้งหมดได้รับสำหรับสตริง สิ่งที่เกี่ยวกับการเปรียบเทียบตัวเลข?

สคริปต์ข้างต้นแสดงตัวอย่างของการเปรียบเทียบตัวเลขสองตัว:

#! / bin / ทุบตีA = 4ข = 5ถ้า $ a = $ bแล้วก็ echo "4 = 5"อื่น echo "4 ไม่เท่ากับ 5"Fi

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

ฉันชอบที่จะใช้ตัวดำเนินการต่อไปนี้เพื่อเปรียบเทียบตัวเลขสอง:

ถ้า $ a -eq $ b 06 จาก 08

คู่มือเริ่มต้นใช้กับ BASH - เปรียบเทียบตัวเลข

ถ้าคุณต้องการเปรียบเทียบว่าจำนวนน้อยกว่าหมายเลขอื่นคุณสามารถใช้ตัวดำเนินการน้อยกว่า (<) เช่นเดียวกับสตริงที่คุณต้องหนีน้อยกว่าผู้ประกอบการด้วยเครื่องหมายทับ ( <)

วิธีที่ดีกว่าในการเปรียบเทียบตัวเลขคือการใช้สัญกรณ์ต่อไปนี้แทน:

  • น้อยกว่า -lt
  • น้อยกว่าหรือเท่ากับ -le
  • มากกว่า - จีที
  • มากกว่าหรือเท่ากับ -ge

ตัวอย่างเช่น:

ถ้า $ a-lt $ bถ้า $ a -le $ bถ้า $ a -ge $ bถ้า $ a-gt $ b 07 จาก 08

คู่มือเริ่มต้นใช้กับ BASH - เปรียบเทียบตัวเลข

สุดท้ายสำหรับคู่มือนี้ถ้าคุณต้องการทดสอบว่าตัวเลขสองตัวแตกต่างกันหรือไม่คุณสามารถใช้โอเปอเรเตอร์น้อยกว่าและมากกว่าโอเปอเรเตอร์ร่วมกัน (<>) หรือ -ne ดังนี้:

ถ้า $ a <> $ bถ้า $ a -ne $ b 08 ใน 08

คู่มือเริ่มต้นใช้งานกับตัวดำเนินการเปรียบเทียบ - สรุป

หากคุณพลาดสามส่วนแรกของคู่มือนี้คุณสามารถค้นหาได้โดยคลิกที่ลิงก์ต่อไปนี้:

  • สวัสดีชาวโลก
  • พารามิเตอร์การป้อนข้อมูล
  • เงื่อนไขและตัวแปร

ในส่วนถัดไปของคู่มือฉันจะครอบคลุมเลขคณิต