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

01 จาก 08

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

การสอน 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 - เปรียบเทียบสตริง

การสอน BASH - เปรียบเทียบสตริง

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

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

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

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

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

หาก ["$ name1" \ "" $ name2 "]

03 จาก 08

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

การสอน BASH - เปรียบเทียบสตริง

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

ถ้า [-n $ name2]

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

04 จาก 08

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

การสอน BASH - เปรียบเทียบสตริง

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

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

name1 = ""

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

ถ้า [-z $ name1]

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

05 จาก 08

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

การสอน BASH - เปรียบเทียบตัวเลข

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

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

#! / bin / ทุบตี

A = 4
ข = 5

ถ้า [$ a = $ b]
แล้วก็
echo "4 = 5"
อื่น
echo "4 ไม่เท่ากับ 5"
Fi

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

ฉันชอบใช้โอเปอเรเตอร์ต่อไปนี้เพื่อเปรียบเทียบตัวเลขสอง:

ถ้า [$ a -eq $ b]

06 จาก 08

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

การสอน BASH - เปรียบเทียบตัวเลข

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

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

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

ถ้า [$ a-lt $ b]

ถ้า [$ a -le $ b]

ถ้า [$ a -ge $ b]

ถ้า [$ a-gt $ b]

07 จาก 08

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

การสอน BASH - เปรียบเทียบตัวเลข

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

ถ้า [$ a <> $ b]

ถ้า [$ a -ne $ b]

08 ใน 08

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

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

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