PlusMagi's Blog By Pitt Phunsanit เทคโนโลยี Shell Script: ดูตัวอย่างการเขียน CLI Argument Parser ด้วย getopts แบบสมบูรณ์

Shell Script: ดูตัวอย่างการเขียน CLI Argument Parser ด้วย getopts แบบสมบูรณ์

การสร้าง Command Line Interface (CLI) ที่มีประสิทธิภาพจำเป็นต้องมีการจัดการอาร์กิวเมนต์ที่ป้อนเข้ามาอย่างเป็นระบบ ในโลกของ Bash Scripting, การทำหน้าที่นี้ถือเป็นรากฐานสำคัญสำหรับนักพัฒนาและ System Administrator ทุกคน เมื่อผู้ใช้ต้องการเรียกใช้งานสคริปต์พร้อมกับตัวเลือกต่างๆ เช่น `–verbose` หรือ `-f filename`, เราจึงไม่สามารถพึ่งพาแค่ `$1,$2,…$N` ได้เพียงพอ

แกะรหัส getopts: หัวใจของการ Parse Arguments

คำสั่ง built-in อย่าง getopts คือเครื่องมือมาตรฐานใน Shell scripting สำหรับวัตถุประสงค์ในการอ่านและการตีความ Options แบบย่อ (-a ตัวแปร), ซึ่งแตกต่างจากการวนลูปผ่าน $@ ทั่วไป เพราะมันถูกออกแบบมาเพื่อแยก Flags และ Option ออกจากกันโดยเฉพาะ โดยจะทำการตรวจสอบว่า Flag นั้นๆ ถูกกำหนดค่าหรือไม่ ทำให้โค้ดของเรามีความทนทานต่อข้อผิดพลาดสูงขึ้นมาก.

โครงสร้างพื้นฐานของ Argument Parser ด้วย while loop و getopts

หัวใจหลักของการทำงานคือการผสานระหว่างวงจร while case %? != null; do ... done เข้ากับการจัดการ positional parameters (ตำแหน่งอาร์กิวเมนต์) เพื่อให้เรามั่นใจได้ว่าจะครอบคลุมทุกสถานการณ์ ไม่ว่าจะเป็น Case ที่ไม่มี arguments เลย, มีแต่ non-option argument เท่านั้น หรือมี option ผสมกับ values ปนอยู่ การใช้ตัวอย่างนี้จึงช่วยให้นักพัฒนาสามารถนำแนวคิด Pattern นี้ไปปรับใช้อย่างเป็นระบบ

Example Script: file_processor.sh


#!/bin/bash
# script name: process_files.sh\ndef usage() {
  echo "Usage: $0 [OPTIONS] FILE..."
echo "Options available:\" 
  echo "--help | -h : แสดงข้อมูลช่วยเหลือ"; echo \"", exit 1;
def parse_args () {
    FILENAME=false # Initialize variable for main filename	exec trap 'rm -f /tmp/$NAME' EXIT # Cleanup temporary files on exit
traps+=(EXIT)
ename=$(basename "$0")	getopts a:v hf i \
 while getopts                             
               
        
Exit mobile version