วิธีตรวจสอบการมีอยู่ของอาร์กิวเมนต์อินพุตใน Bash Shell Script

Withi Trwc Sxb Kar Mi Xyu Khxng Xarkiwment Xinphut Ni Bash Shell Script



การเขียนสคริปต์ Bash shell เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการทำงานซ้ำ ๆ โดยอัตโนมัติและดำเนินการที่ซับซ้อนในบรรทัดคำสั่ง หนึ่งในแนวคิดพื้นฐานในเชลล์สคริปต์คือการยอมรับอินพุตอาร์กิวเมนต์จากผู้ใช้หรือจากสคริปต์อื่นๆ เมื่อต้องจัดการกับอินพุตอาร์กิวเมนต์ จำเป็นต้องตรวจสอบว่ามีอาร์กิวเมนต์อินพุตอยู่หรือไม่ เพื่อหลีกเลี่ยงพฤติกรรมที่ไม่คาดคิดในสคริปต์ บทความนี้จะกล่าวถึงวิธีต่างๆ ในการตรวจสอบการมีอยู่ของอาร์กิวเมนต์อินพุตใน Bash shell script

วิธีตรวจสอบการมีอยู่ของอาร์กิวเมนต์อินพุตใน Bash Shell Script

มีสามวิธีที่แตกต่างกัน:

  1. โดยใช้คำสั่ง “ทดสอบ”
  2. โดยใช้ตัวแปร “$#”
  3. การใช้ตัวเลือก '-n'

วิธีที่ 1: ใช้คำสั่ง 'ทดสอบ'

คำสั่ง “test” หรือที่เรียกว่าคำสั่ง “[” เป็นคำสั่งในตัวใน Bash ที่ทดสอบเงื่อนไขต่างๆ หนึ่งในเงื่อนไขที่เราสามารถทดสอบได้โดยใช้คำสั่ง “ทดสอบ” คือว่ามีตัวแปรอยู่หรือไม่ ต่อไปนี้เป็นโค้ดตัวอย่างเพื่อตรวจสอบว่ามีอาร์กิวเมนต์อินพุตอยู่หรือไม่โดยใช้คำสั่ง 'test':







#!/bin/bash

ถ้า [ -กับ '$1' ]

แล้ว

เสียงสะท้อน 'อาร์กิวเมนต์อินพุตขาดหายไป'

ทางออก 1

เป็น

เสียงสะท้อน 'มีอาร์กิวเมนต์อินพุตอยู่'

ที่นี่ใช้ตัวเลือก '-z' กับคำสั่ง 'ทดสอบ' เพื่อตรวจสอบว่าอาร์กิวเมนต์อินพุตเป็นสตริงว่างหรือไม่ สคริปต์จะแสดงข้อความแสดงข้อผิดพลาดและออกด้วยรหัสสถานะเป็น 1 หากอาร์กิวเมนต์อินพุตเป็นสตริงว่าง มิฉะนั้น สคริปต์จะดำเนินการต่อไป ด้านล่างฉันได้จัดเตรียมและป้อนอาร์กิวเมนต์สำหรับโค้ด ดังนั้นมันจึงแสดงข้อความของการมีอยู่ของอินพุตอาร์กิวเมนต์:





วิธีที่ 2: การใช้ตัวแปร “$#”

เดอะ “$#” ตัวแปรเก็บจำนวนอาร์กิวเมนต์อินพุตที่ส่งผ่านไปยังสคริปต์ หากสคริปต์ต้องการอาร์กิวเมนต์อินพุตอย่างน้อยหนึ่งรายการ เราสามารถตรวจสอบได้ว่า “$#” ตัวแปรมีค่ามากกว่าศูนย์ นี่คือตัวอย่างโค้ดเพื่อตรวจสอบว่ามีอาร์กิวเมนต์อินพุตอย่างน้อยหนึ่งรายการอยู่โดยใช้ “$#” ตัวแปร:





#!/bin/bash

ถ้า [ $# -eq 0 ]

แล้ว

เสียงสะท้อน 'อาร์กิวเมนต์อินพุตขาดหายไป'

ทางออก 1

เป็น

เสียงสะท้อน 'มีอาร์กิวเมนต์อินพุตอยู่'

ที่นี่ “-eq” ตัวดำเนินการใช้ในการตรวจสอบว่า “$#” ตัวแปรมีค่าเท่ากับศูนย์หรือไม่ และถ้าตัวแปร “$#” มีค่าเท่ากับศูนย์ สคริปต์จะแสดงข้อความแสดงข้อผิดพลาดและออกด้วยรหัสสถานะเป็น 1 มิฉะนั้น สคริปต์จะดำเนินการต่อไป ด้านล่างที่ฉันได้ให้ไว้และป้อนข้อมูล อาร์กิวเมนต์สำหรับรหัสจึงแสดงข้อความของการมีอยู่ของอินพุตของอาร์กิวเมนต์:



วิธีที่ 3: การใช้ตัวเลือก “-n”

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

#!/bin/bash

ถ้า [ -น '$1' ]

แล้ว

เสียงสะท้อน 'มีอาร์กิวเมนต์อินพุตอยู่'

อื่น

เสียงสะท้อน 'อาร์กิวเมนต์อินพุตขาดหายไป'

ทางออก 1

เป็น

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

บทสรุป

ในเชลล์สคริปต์ การตรวจสอบการมีอยู่ของอาร์กิวเมนต์อินพุตเป็นขั้นตอนสำคัญเพื่อให้แน่ใจว่าสคริปต์ทำงานตามที่คาดไว้ เราสามารถใช้เทคนิคต่างๆ เพื่อตรวจสอบการมีอยู่ของอาร์กิวเมนต์อินพุต เช่น การใช้คำสั่ง 'test' ตัวแปร '$#' หรือตัวเลือก '-n' ด้วยการใช้เทคนิคเหล่านี้ เราสร้างเชลล์สคริปต์ที่แข็งแกร่งและเชื่อถือได้มากขึ้นซึ่งสามารถจัดการอาร์กิวเมนต์อินพุตได้