ดัดแปลงจากส่วน "ไวยากรณ์อาร์กิวเมนต์ยูทิลิตี้" ของ POSIX มาตรฐาน :
utility_name [-a] [-b] [-c option_argument]
[-d|-e] [-f[option_argument]] [operand...]
utility_nameยูทิลิตี้ในตัวอย่างการตั้งชื่อ มันตามมาด้วยตัวเลือก , ตัวเลือกข้อโต้แย้งและถูกดำเนินการ
อาร์กิวเมนต์ที่ประกอบด้วย-อักขระและตัวอักษรหรือตัวเลขหลักเดียวเช่นเป็นaที่รู้จักกันในชื่อตัวเลือก (หรือประวัติธง ) ตัวเลือกบางอย่างจะตามด้วยตัวเลือกการโต้แย้ง[-c option_argument]ดังแสดงด้วย ข้อโต้แย้งต่อไปนี้ตัวเลือกสุดท้ายและตัวเลือกข้อโต้แย้งที่มีชื่อถูกดำเนินการ
มาตรฐานยังกำหนด "อาร์กิวเมนต์" เป็น
ในภาษาคำสั่งเชลล์พารามิเตอร์ส่งผ่านไปยังยูทิลิตี้เป็นเทียบเท่าของสตริงเดียวในargvอาร์เรย์ที่สร้างโดยหนึ่งในexecฟังก์ชั่น อาร์กิวเมนต์เป็นหนึ่งในตัวเลือกตัวเลือกอาร์กิวเมนต์หรือตัวถูกดำเนินการตามชื่อคำสั่ง
ทุกสิ่งหลังจากที่utility_nameบนบรรทัดคำสั่งเป็นข้อโต้แย้งของยูทิลิตี้และพวกเขาทั้งหมดจะปรากฏขึ้นในพารามิเตอร์ตำแหน่งถ้ามันเป็นสคริปต์เปลือก ตัวเลือกเงื่อนไขตัวเลือกการโต้แย้งและตัวถูกดำเนินการเป็นชื่อที่เฉพาะเจาะจงมากขึ้นสำหรับการขัดแย้งเหล่านี้ในบรรทัดคำสั่ง
"ตั้งค่าสถานะ" และ "เปลี่ยน" เป็นคำพ้องความหมายทั่วไปสำหรับ "ตัวเลือก"
ในกรณีของ
utility -a b=c
-aและb=cเป็นข้อโต้แย้ง
-aเป็นตัวเลือกหากยูทิลิตีรู้จักเช่นนี้ ( lnยูทิลิตีไม่มี-xตัวเลือกดังนั้นจึง-xไม่ใช่ตัวเลือกในการlnพูดอย่างเคร่งครัดและln -xจะกระตุ้นข้อความวินิจฉัย)
b=cเป็นตัวเลือกที่อาร์กิวเมนต์ถ้า-aตัวเลือกที่จะใช้เวลาโต้เถียงมิฉะนั้นมันเป็นตัวถูกดำเนินการ,
bและcมีไม่ได้เลือกตัวเลือกข้อโต้แย้งและไม่ได้ถูกดำเนินการในตัวเอง
ตามที่คุณสังเกตเห็นจากข้อความของฉันข้างต้นการทำงานจากบทสรุปของยูทิลิตี้ (ตามที่กำหนดโดยคู่มือของยูทิลิตี้) จะง่ายกว่าการพยายามถอดรหัสคำสั่งทั่วไปที่พิมพ์บนบรรทัดคำสั่ง คู่มือจะระบุอย่างชัดเจนว่าตัวเลือกใดที่ใช้ตัวเลือกอาร์กิวเมนต์และตัวถูกดำเนินการอื่น ๆ
ในการโทรหาc"ค่า" นั้น IMHO นั้นสมบูรณ์แบบ ไม่ใช่สิ่งที่ได้มาตรฐาน แต่มีน้อยคนนักที่จะเข้าใจผิดถ้าคุณพูดว่า " cเป็นคุณค่าที่มอบให้b " มันจะชัดเจนจากบริบทของโปรแกรมอรรถประโยชน์ที่เป็นปัญหา
ตัวอย่างเช่น
$ awk -v var="d" '...' data.in
ทุกคนที่รู้เกี่ยวกับการawkจะบอกว่า-v var="d"หมายถึง " ตัวแปรมีการกำหนดค่าในบรรทัดคำสั่ง "awkvard