นี่คือคำสั่ง getoptsposix ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
getopts — แยกวิเคราะห์ตัวเลือกยูทิลิตี้
เรื่องย่อ
รับ เลือกสตริง ชื่อ [หาเรื่อง...]
DESCRIPTION
พื้นที่ รับ ยูทิลิตีจะดึงตัวเลือกและอาร์กิวเมนต์ตัวเลือกจากรายการพารามิเตอร์
จะสนับสนุนแนวทางยูทิลิตี้ไวยากรณ์ 3 ถึง 10 ซึ่งรวมถึงที่อธิบายไว้ในฐาน
ปริมาณคำจำกัดความของ POSIX.1-2008, Section 12.2, ประโยชน์ วากยสัมพันธ์ แนวทาง.
ทุกครั้งที่มีการเรียกใช้ รับ ยูทิลิตี้จะวางมูลค่าของตัวเลือกถัดไปใน
ตัวแปรเชลล์ที่ระบุโดย ชื่อ ตัวถูกดำเนินการและดัชนีของอาร์กิวเมนต์ถัดไปที่จะเป็น
ประมวลผลในตัวแปรเชลล์ เลือก. เมื่อใดก็ตามที่เปลือกถูกเรียกใช้ เลือก จะเป็น
เริ่มต้นเป็น 1
เมื่อ option ต้องใช้ option-argument, the รับ ยูทิลิตี้จะวางไว้ใน
ตัวแปรเชลล์ ออพทาร์ก. หากไม่พบตัวเลือก หรือหากไม่พบตัวเลือกดังกล่าว
มีตัวเลือก - อาร์กิวเมนต์ ออพทาร์ก จะต้องไม่ถูกตั้งค่า
หากอักขระตัวเลือกไม่มีอยู่ใน เลือกสตริง พบตัวถูกดำเนินการโดยที่ตัวเลือก
อักขระที่คาดไว้ ตัวแปรเชลล์ที่ระบุโดย ชื่อ จะถูกตั้งค่าเป็น
เครื่องหมาย> ('?') อักขระ. ในกรณีนี้ หากตัวอักษรตัวแรกใน เลือกสตริง คือ
(':') ตัวแปรเชลล์ ออพทาร์ก จะถูกตั้งค่าเป็นอักขระตัวเลือกที่พบ แต่ไม่มีเอาต์พุต
จะต้องเขียนถึงข้อผิดพลาดมาตรฐาน มิฉะนั้นตัวแปรเชลล์ ออพทาร์ก จะต้องไม่ถูกตั้งค่า
และข้อความการวินิจฉัยจะต้องเขียนถึงข้อผิดพลาดมาตรฐาน เงื่อนไขนี้จะเป็น
ถือว่าเป็นข้อผิดพลาดที่ตรวจพบในลักษณะที่ข้อโต้แย้งถูกนำเสนอต่อการเรียก
สมัครแต่จะไม่ผิดพลาดใน รับ การประมวลผล
หากไม่มีตัวเลือกอาร์กิวเมนต์:
* ถ้าอักษรตัวแรกของ เลือกสตริง คือ , ตัวแปรเชลล์ที่ระบุโดย ชื่อ
จะถูกตั้งค่าเป็น ตัวละครและตัวแปรเชลล์ ออพทาร์ก จะถูกกำหนดให้
พบอักขระตัวเลือก
* มิฉะนั้น ตัวแปรเชลล์ที่ระบุโดย ชื่อ จะถูกตั้งค่าเป็น
ตัวอักษรตัวแปรเชลล์ ออพทาร์ก จะต้องไม่ถูกตั้งค่าและข้อความการวินิจฉัยจะต้อง
เขียนถึงข้อผิดพลาดมาตรฐาน เงื่อนไขนี้ให้ถือว่าเป็นข้อผิดพลาดที่ตรวจพบ
ในทางที่ข้อโต้แย้งถูกนำเสนอต่อแอปพลิเคชันที่เรียกใช้ แต่จะไม่เป็น
ข้อผิดพลาดใน รับ กำลังประมวลผล; ข้อความการวินิจฉัยจะต้องเขียนตามที่ระบุไว้ แต่
สถานะการออกจะเป็นศูนย์
เมื่อพบจุดสิ้นสุดของตัวเลือก รับ ยูทิลิตี้จะออกด้วยค่าส่งคืน
มากกว่าศูนย์; ตัวแปรเชลล์ เลือก จะถูกกำหนดเป็นดัชนีตัวแรก
ตัวถูกดำเนินการหรือค่า "$#"+1 หากไม่มีตัวถูกดำเนินการ NS ชื่อ ตัวแปรจะถูกตั้งค่าเป็น
NS อักขระ. ข้อใดต่อไปนี้ให้ระบุจุดสิ้นสุดของตัวเลือก:
เป็นครั้งแรก "-−" อาร์กิวเมนต์ที่ไม่ใช่ออปชั่นอาร์กิวเมนต์ ค้นหาอาร์กิวเมนต์ที่ไม่ใช่อาร์กิวเมนต์
option-argument และไม่ได้ขึ้นต้นด้วย a '-'หรือพบข้อผิดพลาด
ตัวแปรเชลล์ เลือก และ ออพทาร์ก จะต้องอยู่ในพื้นที่ของผู้โทรของ รับ และจะ
ไม่ถูกส่งออกโดยค่าเริ่มต้น
ตัวแปรเชลล์ที่ระบุโดย ชื่อ ตัวถูกดำเนินการ เลือกและ ออพทาร์ก จะส่งผลกระทบต่อ
สภาพแวดล้อมการดำเนินการเชลล์ปัจจุบัน ดู Section 2.12, เปลือก การกระทำ สิ่งแวดล้อม.
หากแอปพลิเคชันตั้งค่า เลือก สำหรับค่า 1 สามารถใช้ชุดพารามิเตอร์ใหม่ได้: อย่างใดอย่างหนึ่ง
พารามิเตอร์ตำแหน่งปัจจุบันหรือใหม่ หาเรื่อง ค่านิยม ความพยายามอื่นใดที่จะเรียกใช้ รับ
หลายครั้งในสภาพแวดล้อมการดำเนินการเชลล์เดียวด้วยพารามิเตอร์ (positional
พารามิเตอร์หรือ หาเรื่อง ตัวถูกดำเนินการ) ที่ไม่เหมือนกันในการวิงวอนทั้งหมดหรือกับ เลือก
ค่าที่แก้ไขเป็นค่าอื่นที่ไม่ใช่ 1 ให้ผลลัพธ์ที่ไม่ระบุ
OPTIONS
ไม่
ตัวดำเนินการ
ตัวถูกดำเนินการดังต่อไปนี้จะได้รับการสนับสนุน:
เลือกสตริง สตริงที่มีอักขระตัวเลือกที่ยูทิลิตีที่เรียกใช้ .รู้จัก
รับ. หากอักขระตามด้วย a , ตัวเลือกที่คาดหวัง
ต้องมีอาร์กิวเมนต์ ซึ่งควรระบุเป็นอาร์กิวเมนต์แยกต่างหาก
แอปพลิเคชันควรระบุอักขระตัวเลือกและอาร์กิวเมนต์ของตัวเลือกเป็น
แยกอาร์กิวเมนต์แต่ รับ จะตีความตัวอักษรตามหลัง an
อักขระตัวเลือกที่ต้องการอาร์กิวเมนต์เป็นอาร์กิวเมนต์ไม่ว่าจะเสร็จสิ้นหรือไม่
ไม่จำเป็นต้องรับรู้ null option-argument หากไม่ได้ระบุเป็น
อาร์กิวเมนต์แยกต่างหากเมื่อ รับ ถูกเรียก (ดูเพิ่มเติมที่ รับ() ฟังก์ชัน
กำหนดไว้ในไดรฟ์ข้อมูลระบบอินเทอร์เฟซของ POSIX.1-2008) อักขระ
และ จะไม่ถูกใช้เป็นอักขระตัวเลือกโดย an
แอปพลิเคชัน. การใช้อักขระตัวเลือกอื่นที่ไม่ใช่ตัวอักษรและตัวเลข
ให้ผลลัพธ์ที่ไม่ระบุรายละเอียด ถ้า option-argument ไม่ได้ระบุเป็น a
แยกอาร์กิวเมนต์จากอักขระตัวเลือก ค่าใน ออพทาร์ก จะเป็น
ถอดอักขระตัวเลือกและ '-'. อักขระตัวแรกใน เลือกสตริง
กำหนดวิธีการ รับ ทำงานถ้าไม่รู้จักอักขระตัวเลือกหรือตัวเลือก-
อาร์กิวเมนต์หายไป
ชื่อ ชื่อของตัวแปรเชลล์ที่จะกำหนดโดย รับ ประโยชน์ต่อ
อักขระตัวเลือกที่พบ
พื้นที่ รับ ยูทิลิตี้โดยค่าเริ่มต้นจะแยกวิเคราะห์พารามิเตอร์ตำแหน่งที่ส่งผ่านไปยังการเรียก
ขั้นตอนเปลือก ถ้า หาเรื่องจะได้รับพวกเขาจะแยกวิเคราะห์แทนตำแหน่ง
พารามิเตอร์
STDIN
ไม่ได้ใช้.
INPUT ไฟล์
ไม่
และพวกเรา ตัวแปร
ตัวแปรสภาพแวดล้อมต่อไปนี้จะส่งผลต่อการดำเนินการของ รับ:
ภาษา ระบุค่าเริ่มต้นสำหรับตัวแปรการทำให้เป็นสากลที่ไม่ได้ตั้งค่าหรือ
โมฆะ. (ดูปริมาณคำจำกัดความพื้นฐานของ POSIX.1-2008 Section 8.2,
สากล ตัวแปร เพื่อความเหนือกว่าของความเป็นสากล
ตัวแปรที่ใช้ในการกำหนดค่าของหมวดหมู่สถานที่)
LC_ALL หากตั้งค่าเป็นค่าสตริงที่ไม่ว่าง ให้แทนที่ค่าของค่าอื่นๆ ทั้งหมด
ตัวแปรความเป็นสากล
LC_CTYPE กำหนดสถานที่สำหรับการตีความลำดับไบต์ของข้อมูลข้อความ
เป็นอักขระ (เช่น ไบต์เดี่ยวเมื่อเทียบกับอักขระหลายไบต์ใน
อาร์กิวเมนต์และไฟล์อินพุต)
LC_MESSAGES
กำหนดโลแคลที่ควรใช้เพื่อส่งผลต่อรูปแบบและเนื้อหาของ
ข้อความวินิจฉัยที่เขียนถึงข้อผิดพลาดมาตรฐาน
นศ กำหนดตำแหน่งของแค็ตตาล็อกข้อความสำหรับการประมวลผลของ LC_MESSAGES.
เลือก ตัวแปรนี้จะถูกใช้โดย รับ ประโยชน์เป็นดัชนีต่อไป
อาร์กิวเมนต์ที่จะดำเนินการ
อะซิงโครนัส กิจกรรม
ผิดนัด
STDOUT
ไม่ได้ใช้.
สแตเดอร์
เมื่อใดก็ตามที่ตรวจพบข้อผิดพลาดและอักขระตัวแรกใน เลือกสตริง ตัวถูกดำเนินการไม่ใช่ a
(':') ข้อความการวินิจฉัยจะต้องเขียนถึงข้อผิดพลาดมาตรฐานดังต่อไปนี้
ข้อมูลในรูปแบบที่ไม่ระบุ:
* ชื่อโปรแกรมที่เรียกจะระบุไว้ในข้อความ โปรแกรมอัญเชิญ
ชื่อจะเป็นค่าของพารามิเตอร์พิเศษของเชลล์ 0 (ดู Section 2.5.2, พิเศษ
พารามิเตอร์) ในขณะที่ รับ ยูทิลิตี้ถูกเรียกใช้ ชื่อเทียบเท่ากับ:
ชื่อฐาน "$0"
อาจจะใช้.
* หากพบตัวเลือกที่ไม่ได้ระบุไว้ใน เลือกสตริงข้อผิดพลาดนี้ถูกระบุ
และจะต้องระบุอักขระตัวเลือกที่ไม่ถูกต้องในข้อความ
* หากพบ option ที่ต้องการ option-argument แต่ option-argument ไม่ใช่
พบข้อผิดพลาดนี้จะถูกระบุและอักขระตัวเลือกที่ไม่ถูกต้องจะเป็น
ระบุไว้ในข้อความ
เอาท์พุท ไฟล์
ไม่
ขยาย DESCRIPTION
ไม่
EXIT สถานภาพ
ค่าทางออกต่อไปนี้จะถูกส่งคืน:
0 ตัวเลือกที่ระบุหรือไม่ระบุโดย เลือกสตริง, ถูกพบ.
>0 พบจุดสิ้นสุดของตัวเลือกหรือเกิดข้อผิดพลาด
ผลกระทบที่เกิด OF ข้อผิดพลาด
ผิดนัด
พื้นที่ ดังต่อไปนี้ ส่วน เป็น ข้อมูล.
ใบสมัคร การใช้
ตั้งแต่ รับ ส่งผลกระทบต่อสภาพแวดล้อมการดำเนินการของเชลล์ปัจจุบัน โดยทั่วไปจะให้เป็น
เชลล์ปกติในตัว หากถูกเรียกในเชลล์ย่อยหรือการดำเนินการยูทิลิตี้แยกต่างหาก
สิ่งแวดล้อมเช่นอย่างใดอย่างหนึ่งต่อไปนี้:
(gettopts abc ความคุ้มค่า "$@")
ไม่อัพ รับ ...
พบ . -ผู้บริหาร รับ ... \;
ไม่มีผลกับตัวแปรเชลล์ในสภาพแวดล้อมของผู้โทร
โปรดทราบว่าฟังก์ชั่นเชลล์แชร์ เลือก ด้วยเชลล์การโทรแม้ว่า positional
พารามิเตอร์มีการเปลี่ยนแปลง หากเชลล์การเรียกและฟังก์ชันใด ๆ ของมันใช้ รับ ไปยัง
อาร์กิวเมนต์แยกวิเคราะห์ผลลัพธ์ไม่ได้ระบุ
ตัวอย่าง
สคริปต์ตัวอย่างต่อไปนี้จะแยกวิเคราะห์และแสดงอาร์กิวเมนต์:
อัฟธง=
บีแฟลก=
ในขณะที่ รับ AB: ชื่อ
do
กรณี $ชื่อ in
a) อัฟธง=1;;
b) บีแฟลก=1
bval="$OPTARG";;
?) printf "การใช้งาน: %NS: [-a] [-ข ค่า] หาเรื่อง\n" $0
ทางออก 2 ;;
ว่า C
ทำ
if [ ! -z "$aflag" ]; แล้วก็
printf "ตัวเลือก -ก ระบุ\n"
fi
if [ ! -z "$bflag" ]; แล้วก็
printf 'ตัวเลือก -ข "%NS" ระบุ\n' "$bval"
fi
เปลี่ยน $(($OPTIND .) - 1))
printf "ที่เหลืออยู่ ข้อโต้แย้ง คือ: %s\n$*"
หลักการและเหตุผล
พื้นที่ รับ ยูทิลิตี้ได้รับเลือกมากกว่า System V รับ ประโยชน์เพราะ
รับ จัดการตัวเลือกอาร์กิวเมนต์ที่มี ตัวอักษร
พื้นที่ ออพทาร์ก ตัวแปรไม่ได้กล่าวถึงในส่วนตัวแปรสภาพแวดล้อมเพราะไม่
ไม่กระทบต่อการดำเนินการของ รับ; มันเป็นหนึ่งในตัวแปร ``เอาต์พุตเท่านั้น'' ไม่กี่ตัวที่ใช้
โดยระบบสาธารณูปโภคมาตรฐาน
NS ไม่ได้รับอนุญาตให้เป็นอักขระตัวเลือกเพราะนั่นไม่ใช่พฤติกรรมในอดีต
และละเมิดหลักเกณฑ์ของยูทิลิตี้ไวยากรณ์ NS ถูกกำหนดให้ประพฤติตัวเป็น
ในเวอร์ชัน KornShell ของ รับ คุณประโยชน์; เมื่อใช้เป็นอักขระตัวแรกใน
เลือกสตริง ตัวถูกดำเนินการ จะปิดใช้งานการวินิจฉัยเกี่ยวกับตัวเลือกอาร์กิวเมนต์ที่ขาดหายไปและ
อักขระตัวเลือกที่ไม่คาดคิด นี้แทนที่การใช้ ออปเตอร์ ตัวแปรที่เป็น
ระบุไว้ในข้อเสนอเบื้องต้น
รูปแบบของข้อความวินิจฉัยที่สร้างโดย รับ ยูทิลิตี้และ รับ()
ไม่ได้ระบุฟังก์ชันทั้งหมดเนื่องจากการใช้งานที่เหนือกว่า (``เป็นมิตร'')
รูปแบบที่คัดค้านรูปแบบที่ใช้โดยการใช้งานในอดีตบางอย่าง มาตรฐาน
นักพัฒนาเห็นว่าข้อมูลในข้อความที่ใช้มีความสม่ำเสมอเป็นสิ่งสำคัญ
ระหว่าง รับ และ รับ(). อาจไม่สามารถทำซ้ำข้อความได้อย่างแน่นอน
โดยเฉพาะอย่างยิ่งถ้ายูทิลิตี้ถูกสร้างขึ้นบนระบบอื่นที่มีความแตกต่างกัน รับ()
แต่ข้อความต้องมีข้อมูลเฉพาะเพื่อให้โปรแกรม
ผู้ใช้สามารถแยกแยะชื่อ อักขระตัวเลือกที่ไม่ถูกต้อง และประเภทของข้อผิดพลาดได้
เฉพาะโปรแกรมแอปพลิเคชันที่หายากเท่านั้นที่สกัดกั้นa รับ ข้อความแสดงข้อผิดพลาดมาตรฐานและต้องการ
แยกวิเคราะห์มัน ดังนั้น การใช้งานจึงมีอิสระในการเลือกข้อความที่ใช้งานได้มากที่สุดที่สามารถทำได้
ประดิษฐ์. รูปแบบต่อไปนี้ถูกใช้โดยการใช้งานในอดีตหลายอย่าง:
"%NS: ที่ผิดกฎหมาย ตัวเลือก −− %c\n", <โครงการ ชื่อ>, <ตัวเลือก ตัวอักษร>
"%s: ตัวเลือกต้องมีอาร์กิวเมนต์ −− %c\n",โครงการ ชื่อ>, \
<ตัวเลือก ตัวอักษร>
เชลล์ประวัติศาสตร์ที่มีเวอร์ชันในตัวของ รับ() หรือ รับ ได้ใช้ต่างกัน
รูปแบบ บ่อยครั้งไม่ได้ระบุอักขระตัวเลือกที่พบในข้อผิดพลาด
อนาคต ลู่ทาง
ไม่
ใช้ getoptsposix ออนไลน์โดยใช้บริการ onworks.net