ดัดแปลงจากส่วน "ไวยากรณ์อาร์กิวเมนต์ยูทิลิตี้" ของ 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"
หมายถึง " ตัวแปรมีการกำหนดค่าในบรรทัดคำสั่ง "awk
var
d