โฮมเพจ » ทำอย่างไร » คู่มือเริ่มต้นของ Shell Scripting 4 เงื่อนไข & คำสั่ง If-Then

    คู่มือเริ่มต้นของ Shell Scripting 4 เงื่อนไข & คำสั่ง If-Then

    เราครอบคลุมพื้นฐานเพียงพอในคู่มือของเราเกี่ยวกับเชลล์สคริปต์ที่คุณควรรู้สึกสะดวกสบายในการทดสอบ ในภาคของสัปดาห์นี้เราจะจัดการกับสิ่งที่สนุกสนานมากขึ้นเช่นเงื่อนไขและคำสั่ง“ if-then”.

    เงื่อนไขคืออะไร?

    ในภาษาที่ใช้ในชีวิตประจำวันเราบอกว่าเงื่อนไขเป็นข้อกำหนดที่ต้องพบเจอเพื่อให้บางสิ่งเกิดขึ้น เพื่อให้แล็ปท็อปของฉันสามารถเชื่อมต่ออินเทอร์เน็ตได้มีเงื่อนไขหลายประการที่ต้องปฏิบัติเช่นมี ISP, โมเด็มและ / หรือเราเตอร์เปิดอยู่, แล็ปท็อปของฉันเปิดอยู่ ฯลฯ มันค่อนข้างง่ายและถ้ามี ความต้องการเหล่านั้นไม่เป็นไปตามผลลัพธ์ - แล็ปท็อปของฉันเชื่อมต่อกับอินเทอร์เน็ต - ไม่เกิดขึ้น.

    เงื่อนไขในขอบเขตของการคำนวณทำงานคล้ายกัน เราสามารถทดสอบว่าสตริงตรงกับสายอื่นไม่ว่าจะไม่ตรงกับสายอื่นหรือแม้ว่ามันจะมีอยู่ทั้งหมด ในทำนองเดียวกันเราสามารถทดสอบข้อโต้แย้งเชิงตัวเลขเพื่อดูว่าข้อใดข้อหนึ่งนั้นยอดเยี่ยมกว่าน้อยกว่าหรือเท่ากับอีกข้อหนึ่ง ในการทำให้บางสิ่งเกิดขึ้นหลังจากตรงตามเงื่อนไขของการทดสอบเราจะใช้คำสั่ง“ if-then” รูปแบบของพวกเขาค่อนข้างเรียบง่าย.

    ถ้าเงื่อนไข
    แล้วก็
    Command1
    Command2
    ...
    CommandN
    Fi

    ถ้างบ

    เรามาทดสอบสคริปต์สั้น ๆ กันเถอะ?

    ถ้าทดสอบ $ 1 -gt $ 2
    แล้วก็
    echo“ $ 1 มากกว่า $ 2”
    Fi

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

    echo“ นี่มาหลังจากคำสั่ง if”

    นี่คือโอเปอเรเตอร์ตัวเลขอื่น ๆ ที่คุณอาจต้องการลองใช้:

    • -eq: เท่ากับ
    • -NE: ไม่เท่ากับ
    • -lt: น้อยกว่า
    • -le: น้อยกว่าหรือเท่ากับ
    • -gt: มากกว่า
    • -ge: มากกว่าหรือเท่ากับ

    สายการทดสอบ

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

    ถ้าทดสอบ $ 1 = $ 2

    จากนั้นเงื่อนไขจะทดสอบว่าทั้งสองมีค่าเท่ากันหรือไม่ แม้ว่าจะมีการจับที่นี่ !! การใช้เครื่องหมายเท่ากับ (=) เปรียบเทียบสองสตริงและไม่ใช่ตัวเลข หากคุณต้องการเปรียบเทียบตัวเลขคุณจะต้องใช้โอเปอเรเตอร์“ -eq” คล้ายกับวิธีที่เราใช้“ -gt” ด้านบน.

    ตอนนี้เรามาทำการเปลี่ยนแปลงอื่น ๆ :

    ถ้าทดสอบ $ 1! = $ 2

    การรวมเครื่องหมายอัศเจรีย์ (!) ทำหน้าที่เป็นตัวปรับ "ไม่ใช่" นั่นคือมันรันเฉพาะคำสั่งต่อไปนี้เมื่อทั้งสองสายไม่ตรงกัน.

    นี่คือรายการของการทดสอบแบบอิงสตริงที่คุณสามารถใช้ได้:

    • string: การใช้เพียงแค่ข้อโต้แย้งด้วยตัวเองทดสอบว่าสตริงไม่ว่าง (null) หรือไม่ได้กำหนดไว้อย่างใด
    • -n string: สิ่งนี้จะทดสอบว่าสตริงนั้นไม่ว่างเปล่าและมีการกำหนดไว้หรือไม่
    • -z string: สิ่งนี้จะทดสอบว่าสตริงว่างหรือไม่และถูกกำหนดด้วยวิธีนั้น

    มีอะไรอีกถ้า?

    ฉันจะยอมรับชื่อส่วนนั้นแน่นอนปุนไม่ดี โอเคเรารู้วิธีเรียกใช้งานคำสั่งหากการทดสอบเป็นจริง แต่ถ้าเราต้องการเรียกใช้คำสั่งอื่นถ้ามันเป็นเท็จ เราสามารถรวมสองส่วนเข้าด้วยกันได้อย่างง่ายดายโดยการเพิ่มหัวข้อในคำสั่ง“ if-then” ของเรา -“ อื่น ๆ ”!

    ถ้าเงื่อนไข
    แล้วก็
    Command1
    Command2
    ...
    CommandN
    อื่น
    Command1
    Command2
    ...
    CommandN
    Fi

    มารวมกันเป็นสคริปต์ง่ายๆ.

    มีทุกอย่างพร้อมการเยื้องที่เหมาะสม หากคุณมองอย่างใกล้ชิดคุณจะสังเกตเห็นว่าเราใช้วงเล็บเหลี่ยม ([และ]) แทนคำสั่งทดสอบ พวกมันใช้งานได้ตามวัตถุประสงค์ของเราและคุณมีแนวโน้มที่จะเห็นวงเล็บเหลี่ยมมากขึ้นด้วยเหตุผลต่าง ๆ ดังนั้นเราจะใช้พวกมันต่อจากนี้ไป.

    นี่คือลักษณะของผลลัพธ์:

    มันง่ายมาก!

    ฉันทำอะไรตอนนี้?

    ตอนนี้คุณรู้วิธีใช้คำสั่ง“ if-then-else” แล้วคุณสามารถเรียกใช้สคริปต์ที่สามารถทำการทดสอบได้ ตัวอย่างเช่นคุณสามารถเรียกใช้สคริปต์ที่จะคำนวณแฮช md5 ของไฟล์แล้วเปรียบเทียบกับไฟล์ที่คุณดาวน์โหลดในไฟล์เพื่อดูว่าตรงกันหรือไม่.

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


    เราได้รับส่วนที่น่าสนใจมากขึ้นในคู่มือผู้เริ่มต้นสู่การเขียนสคริปต์เชลล์ หากคุณพลาดบทเรียนก่อนหน้านี้ต่อไปนี้เป็นรายการย่อสำหรับให้คุณลองดู:

    1. พื้นฐานของการเขียนสคริปต์เชลล์
    2. ใช้สำหรับลูป
    3. คำสั่งพื้นฐานเพิ่มเติม
    4. อะไรคือความแตกต่างระหว่าง Linux shells?
    5. วิธีใช้นิพจน์ปกติพื้นฐาน

    หากคุณสร้างหรือใช้สคริปต์ที่ใช้เงื่อนไขการทดสอบ, คำสั่ง if-then-else และลูป“ for” ให้แบ่งปันความคิดเห็นกับเรา!