นี่คือคำสั่ง getopt ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
getopt - ตัวเลือกคำสั่งแยกวิเคราะห์ (ปรับปรุงแล้ว)
เรื่องย่อ
รับ เลือกสตริง พารามิเตอร์
รับ [ตัวเลือก] [--] เลือกสตริง พารามิเตอร์
รับ [ตัวเลือก] -o|--ตัวเลือก เลือกสตริง [ตัวเลือก] [--] พารามิเตอร์
DESCRIPTION
รับ ใช้ในการเลิกรา (วิเคราะห์คำ) ตัวเลือกในบรรทัดคำสั่งเพื่อให้แยกวิเคราะห์ได้ง่ายโดย shell
ขั้นตอนและตรวจสอบตัวเลือกทางกฎหมาย มันใช้ GNU รับ(3) กิจวัตรที่ต้องทำ
นี้.
พารามิเตอร์ รับ ถูกเรียกด้วย สามารถแบ่งออกเป็นสองส่วน: ตัวเลือกที่ปรับเปลี่ยน
วิธีการที่ รับ จะทำการแยกวิเคราะห์ (the ตัวเลือก และ เลือกสตริง ใน เรื่องย่อ), และ
พารามิเตอร์ที่จะแยกวิเคราะห์ (พารามิเตอร์ ใน เรื่องย่อ). ส่วนที่สอง will
เริ่มต้นที่พารามิเตอร์ non-option ตัวแรกที่ไม่ใช่อาร์กิวเมนต์ option หรือหลัง first
การเกิดของ '--'. ถ้าไม่ '-o' หรือ '--ตัวเลือก' ตัวเลือกจะอยู่ในส่วนแรก the
พารามิเตอร์แรกของส่วนที่สองถูกใช้เป็นสตริงตัวเลือกแบบสั้น
ถ้าตัวแปรสภาพแวดล้อม GETOPT_COMPATIBLE ถูกตั้งค่าหรือถ้าเป็นอันดับแรก พารามิเตอร์ ไม่ใช่
ตัวเลือก (ไม่ได้ขึ้นต้นด้วย '-' รูปแบบแรกใน เรื่องย่อ), รับ จะสร้าง
เอาต์พุตที่เข้ากันได้กับเวอร์ชันอื่นของ รับ(1). ก็ยังจะทำ
สับเปลี่ยนพารามิเตอร์และรับรู้อาร์กิวเมนต์ที่เป็นทางเลือก (ดูหัวข้อ ความเข้ากันได้ สำหรับข้อมูลเพิ่มเติม
ข้อมูล).
การใช้งานแบบดั้งเดิมของ รับ(1) ไม่สามารถรับมือกับช่องว่างและอื่น ๆ ได้
(เฉพาะเชลล์) อักขระพิเศษในอาร์กิวเมนต์และพารามิเตอร์ที่ไม่ใช่ตัวเลือก เพื่อแก้ปัญหานี้
ปัญหา การดำเนินการนี้สามารถสร้างผลลัพธ์ที่ยกมาซึ่งจะต้องเป็น .อีกครั้ง
แปลโดยเชลล์ (โดยปกติโดยใช้ the ประเมิน สั่งการ). สิ่งนี้มีผลกับ
รักษาตัวอักษรเหล่านั้นไว้ แต่คุณต้องเรียก รับ ในแบบที่ไม่ได้เป็นอีกต่อไป
เข้ากันได้กับรุ่นอื่น ๆ (รูปแบบที่สองหรือสามใน เรื่องย่อ). เพื่อกำหนด
ไม่ว่าจะเป็นเวอร์ชั่นที่ปรับปรุงแล้วของ รับ(1) ติดตั้งแล้ว ตัวเลือกการทดสอบพิเศษ (-T) เป็นไปได้
มือสอง
OPTIONS
-a, --ทางเลือก
อนุญาตให้ตัวเลือกแบบยาวเริ่มต้นด้วย '-'.
-h, --ช่วยด้วย
แสดงข้อความช่วยเหลือและออก ไม่มีการสร้างเอาต์พุตอื่น
-l, --ตัวเลือกระยะยาว ลองออป
ตัวเลือกยาว (หลายอักขระ) ที่ต้องจดจำ มากกว่าหนึ่งตัวเลือกชื่ออาจ
ระบุพร้อมกันโดยคั่นชื่อด้วยเครื่องหมายจุลภาค ตัวเลือกนี้อาจจะเป็น
ให้มากกว่าหนึ่งครั้ง ลองออป เป็นแบบสะสม ชื่อตัวเลือกยาวแต่ละตัวใน
ลองออป อาจตามด้วยโคลอนหนึ่งตัวเพื่อระบุว่ามีอาร์กิวเมนต์ที่จำเป็น และ
โดยสองทวิภาคเพื่อระบุว่ามีอาร์กิวเมนต์ที่เป็นทางเลือก
-n, --ชื่อ ชื่อรายการ
ชื่อที่จะใช้โดย รับ(3) กิจวัตรเมื่อรายงานข้อผิดพลาด บันทึก
ข้อผิดพลาดของ รับ(1) ยังคงรายงานว่ามาจาก getopt
-o, --ตัวเลือก ทางลัด
ตัวเลือกสั้น (หนึ่งอักขระ) ที่จะรู้จัก หากไม่พบตัวเลือกนี้
พารามิเตอร์แรกของ รับ ที่ไม่ได้ขึ้นต้นด้วย '-' (และไม่ใช่ตัวเลือก
อาร์กิวเมนต์) ถูกใช้เป็นสตริงตัวเลือกแบบสั้น อักขระตัวเลือกสั้นแต่ละตัวใน
ทางลัด อาจตามด้วยโคลอนหนึ่งตัวเพื่อระบุว่ามีอาร์กิวเมนต์ที่จำเป็น และ
โดยสองทวิภาคเพื่อระบุว่ามีอาร์กิวเมนต์ที่เป็นทางเลือก อักขระตัวแรกของ
ทางลัดอาจเป็น '+' หรือ '-' เพื่อมีอิทธิพลต่อวิธีแยกวิเคราะห์ตัวเลือกและผลลัพธ์คือ
สร้างขึ้น (ดูหัวข้อ การสแกน โหมด สำหรับรายละเอียด)
-q, --เงียบ
ปิดใช้งานการรายงานข้อผิดพลาดโดย รับ(3)
-Q, --เงียบ-เอาท์พุท
อย่าสร้างเอาต์พุตปกติ ข้อผิดพลาดยังคงรายงานโดย รับ(3) เว้นแต่คุณ
ยังใช้ -q.
-s, --เปลือก เปลือก
กำหนดข้อตกลงในการเสนอราคาให้กับผู้ที่ เปลือก. หาก -s ไม่ได้ระบุตัวเลือก BASH
มีการใช้อนุสัญญา อาร์กิวเมนต์ที่ถูกต้องคือ 'sh''ทุบตี','csh'และ
'tcsh'.
-T, --ทดสอบ
ทดสอบว่าคุณ รับ(1) เป็นเวอร์ชันปรับปรุงหรือเวอร์ชันเก่า สิ่งนี้ทำให้เกิด
ไม่มีเอาต์พุต และตั้งค่าสถานะข้อผิดพลาดเป็น 4 การใช้งานอื่นๆ ของ รับ(1) และ
รุ่นนี้ถ้าตัวแปรสภาพแวดล้อม GETOPT_COMPATIBLE ถูกตั้งค่าจะกลับมา '--'
และสถานะข้อผิดพลาด 0
-u, --ไม่มีเครื่องหมายคำพูด
อย่าอ้างผลลัพธ์ โปรดทราบว่าช่องว่างและพิเศษ (ขึ้นอยู่กับเชลล์)
ตัวละครสามารถทำให้เกิดความหายนะในโหมดนี้ (เช่นที่พวกเขาทำกับคนอื่น ๆ รับ(1)
การนำไปใช้)
-V, --รุ่น
แสดงข้อมูลเวอร์ชันและออก ไม่มีการสร้างเอาต์พุตอื่น
พาร์ซิง
ส่วนนี้ระบุรูปแบบของส่วนที่สองของพารามิเตอร์ของ รับ (
พารามิเตอร์ ใน เรื่องย่อ). ส่วนต่อไป (เอาท์พุท) อธิบายผลลัพธ์ที่เป็น
สร้างขึ้น โดยทั่วไปพารามิเตอร์เหล่านี้เป็นพารามิเตอร์ที่ฟังก์ชันเชลล์เรียกว่า
กับ. ต้องใช้ความระมัดระวังว่าแต่ละพารามิเตอร์ที่ฟังก์ชันเชลล์ถูกเรียกด้วย
สอดคล้องกับหนึ่งพารามิเตอร์ในรายการพารามิเตอร์ของ รับ (โปรดดู ตัวอย่าง).
การแยกวิเคราะห์ทั้งหมดทำโดยGNU รับ(3) กิจวัตรประจำวัน
พารามิเตอร์จะแยกวิเคราะห์จากซ้ายไปขวา พารามิเตอร์แต่ละตัวถูกจัดประเภทเป็น short
ตัวเลือก ตัวเลือกยาว อาร์กิวเมนต์ของตัวเลือก หรือพารามิเตอร์ที่ไม่ใช่ตัวเลือก
ตัวเลือกสั้น ๆ อย่างง่ายคือ '-' ตามด้วยอักขระตัวเลือกสั้น ๆ หากตัวเลือกมี a
อาร์กิวเมนต์ที่จำเป็น มันอาจจะเขียนโดยตรงหลังจากอักขระตัวเลือกหรือเป็นต่อไป
พารามิเตอร์ (เช่น คั่นด้วยช่องว่างบนบรรทัดคำสั่ง) หากตัวเลือกมี
อาร์กิวเมนต์ที่เป็นทางเลือก จะต้องเขียนโดยตรงต่อจากอักขระตัวเลือก หากมี
เป็นไปได้ที่จะระบุตัวเลือกสั้น ๆ หลายตัวหลังจากหนึ่ง '-' ตราบใดที่ทั้งหมด (ยกเว้น
อาจเป็นครั้งสุดท้าย) ไม่มีอาร์กิวเมนต์ที่จำเป็นหรือเป็นทางเลือก
ตัวเลือกยาวมักจะเริ่มต้นด้วย '--' ตามด้วยชื่อตัวเลือกแบบยาว ถ้าตัวเลือก
มีอาร์กิวเมนต์ที่จำเป็น มันสามารถเขียนได้โดยตรงหลังจากชื่อตัวเลือกแบบยาว แยก
โดย '=' หรือเป็นอาร์กิวเมนต์ถัดไป (เช่น คั่นด้วยช่องว่างบนบรรทัดคำสั่ง) ถ้า
ตัวเลือกมีอาร์กิวเมนต์เสริมจะต้องเขียนโดยตรงหลังจากตัวเลือกยาว
ชื่อ คั่นด้วย '=' ถ้ามี (ถ้าคุณเพิ่ม '=' แต่ไม่มีอะไรอยู่เบื้องหลังมันคือ
ตีความราวกับว่าไม่มีการโต้แย้งเกิดขึ้น นี่เป็นข้อผิดพลาดเล็กน้อย ดูที่ ข้อบกพร่อง). ยาว
ตัวเลือกต่างๆ อาจใช้ตัวย่อก็ได้ ตราบใดที่ตัวย่อไม่คลุมเครือ
แต่ละพารามิเตอร์ไม่ขึ้นต้นด้วย '-' และไม่ใช่อาร์กิวเมนต์ที่จำเป็นของตัวเลือกก่อนหน้า
เป็นพารามิเตอร์ที่ไม่ใช่ตัวเลือก แต่ละพารามิเตอร์หลัง '--' พารามิเตอร์ถูกตีความเสมอว่า
พารามิเตอร์ที่ไม่ใช่ตัวเลือก ถ้าตัวแปรสภาพแวดล้อม POSIXLY_CORRECT ถูกตั้งค่าหรือถ้า
สตริงตัวเลือกสั้น ๆ เริ่มต้นด้วย '+' พารามิเตอร์ที่เหลือทั้งหมดจะถูกตีความว่าเป็น
พารามิเตอร์ที่ไม่ใช่ตัวเลือกทันทีที่พบพารามิเตอร์ที่ไม่ใช่ตัวเลือกแรก
เอาท์พุท
เอาต์พุตถูกสร้างขึ้นสำหรับแต่ละองค์ประกอบที่อธิบายไว้ในส่วนก่อนหน้า ผลลัพธ์เสร็จสิ้นใน
ลำดับเดียวกับองค์ประกอบที่ระบุไว้ในอินพุต ยกเว้น non-option
พารามิเตอร์ ผลลัพธ์สามารถทำได้ใน เข้ากันได้ (ไม่ได้ยกมา) โหมดหรือในลักษณะที่
ช่องว่างและอักขระพิเศษอื่น ๆ ภายในอาร์กิวเมนต์และพารามิเตอร์ที่ไม่ใช่ตัวเลือกคือ
สงวนไว้ (ดู ใบเสนอราคา). เมื่อเอาต์พุตถูกประมวลผลในเชลล์สคริปต์ ดูเหมือนว่า
จะประกอบด้วยองค์ประกอบที่แตกต่างกันซึ่งสามารถประมวลผลได้ทีละอย่าง (โดยใช้ shift
คำสั่งในภาษาเชลล์ส่วนใหญ่) นี้ไม่สมบูรณ์ในโหมด unquoted เนื่องจากองค์ประกอบสามารถ
แยกในสถานที่ที่ไม่คาดคิดหากมีช่องว่างหรืออักขระพิเศษ
หากมีปัญหาในการแยกวิเคราะห์พารามิเตอร์ เช่น เนื่องจากอาร์กิวเมนต์ที่ต้องการคือ
ไม่พบหรือไม่รู้จักตัวเลือก ข้อผิดพลาดจะถูกรายงานบน stderr จะ
ไม่มีผลลัพธ์สำหรับองค์ประกอบที่ละเมิด และสถานะข้อผิดพลาดที่ไม่เป็นศูนย์จะถูกส่งกลับ
สำหรับตัวเลือกสั้น ๆ เดียว '-' และอักขระตัวเลือกจะถูกสร้างขึ้นเป็นพารามิเตอร์เดียว
หากตัวเลือกมีอาร์กิวเมนต์ พารามิเตอร์ถัดไปจะเป็นอาร์กิวเมนต์ ถ้าตัวเลือก
รับอาร์กิวเมนต์ที่เป็นทางเลือก แต่ไม่พบ พารามิเตอร์ถัดไปจะถูกสร้างขึ้นแต่
ว่างในโหมดใบเสนอราคา แต่ไม่มีการสร้างพารามิเตอร์ที่สองใน unquoted
(เข้ากันได้) โหมด สังเกตว่าอื่นๆอีกมากมาย รับ(1) การใช้งานไม่รองรับตัวเลือก
ข้อโต้แย้ง
หากระบุตัวเลือกสั้น ๆ หลายรายการหลังจาก '-' แต่ละคนจะมีอยู่ใน
เอาต์พุตเป็นพารามิเตอร์แยกต่างหาก
สำหรับตัวเลือกที่ยาวนาน '--' และชื่อตัวเลือกเต็มจะถูกสร้างขึ้นเป็นพารามิเตอร์เดียว นี่คือ
ทำโดยไม่คำนึงถึงตัวเลือกที่เป็นตัวย่อหรือระบุด้วยตัวเดียว '-' ใน
ป้อนข้อมูล. อาร์กิวเมนต์ได้รับการจัดการเช่นเดียวกับตัวเลือกสั้นๆ
โดยปกติจะไม่มีการสร้างเอาต์พุตพารามิเตอร์ที่ไม่ใช่ตัวเลือกจนกว่าตัวเลือกทั้งหมดและ
อาร์กิวเมนต์ถูกสร้างขึ้น แล้ว '--' ถูกสร้างขึ้นเป็นพารามิเตอร์เดียว และหลังจากนั้น
พารามิเตอร์ที่ไม่ใช่ตัวเลือกในลำดับที่พบ โดยแต่ละรายการเป็นพารามิเตอร์ที่แยกจากกัน
เฉพาะในกรณีที่อักขระตัวแรกของสตริงตัวเลือกแบบสั้นคือ '-' พารามิเตอร์ที่ไม่ใช่ตัวเลือก
เอาต์พุตถูกสร้างขึ้นที่ตำแหน่งที่พบในอินพุต (ไม่รองรับหาก
รูปแบบแรกของ เรื่องย่อ ถูกนำมาใช้; ในกรณีนั้นทั้งหมดที่เกิดขึ้นก่อนหน้าของ '-' และ
'+' จะถูกละเว้น)
ใบเสนอราคา
ในโหมดที่เข้ากันได้ ช่องว่างหรืออักขระ 'พิเศษ' ในอาร์กิวเมนต์หรือไม่ตัวเลือก
พารามิเตอร์ไม่ได้รับการจัดการอย่างถูกต้อง เนื่องจากเอาต์พุตถูกป้อนไปยังเชลล์สคริปต์ ตัว
สคริปต์ไม่ทราบว่าควรแบ่งเอาต์พุตออกเป็นพารามิเตอร์แยกกันอย่างไร ถึง
หลีกเลี่ยงปัญหานี้ การดำเนินการนี้เสนอราคา แนวคิดคือผลลัพธ์คือ
สร้างด้วยเครื่องหมายคำพูดรอบ ๆ พารามิเตอร์แต่ละตัว เมื่อผลลัพธ์นี้ถูกป้อนไปยัง .อีกครั้ง
เปลือก (โดยปกติเปลือก ประเมิน คำสั่ง) มันถูกแยกออกเป็นพารามิเตอร์แยกกันอย่างถูกต้อง
การอ้างอิงจะไม่เปิดใช้งานหากตัวแปรสภาพแวดล้อม GETOPT_COMPATIBLE ถูกตั้งไว้ถ้าตัวแรก
รูปแบบของ เรื่องย่อ ถูกใช้หรือถ้าตัวเลือก '-u' พบ.
เชลล์ที่ต่างกันใช้แบบแผนการอ้างอิงที่ต่างกัน คุณสามารถใช้ '-s' ตัวเลือกที่จะเลือก
เปลือกที่คุณใช้ ปัจจุบันรองรับเชลล์ต่อไปนี้: 'sh','ทุบตี',
'csh'และ'tcsh'. ที่จริงแล้ว 'รสชาติ' มีความแตกต่างกันเพียงสองอย่างเท่านั้น: การอ้างอิงแบบ sh-like
อนุสัญญาและอนุสัญญาการอ้างอิงแบบ csh โอกาสที่ถ้าคุณใช้เชลล์อื่น
ภาษาสคริปต์ รสชาติเหล่านี้ยังคงใช้ได้
การสแกน โหมด
อักขระตัวแรกของสตริงตัวเลือกแบบสั้นอาจเป็น '-' หรือ '+' เพื่อบ่งชี้ a
โหมดการสแกนพิเศษ หากรูปแบบการโทรครั้งแรกใน เรื่องย่อ ถูกใช้ พวกเขาคือ
ละเลย; ตัวแปรสภาพแวดล้อม POSIXLY_CORRECT ยังคงตรวจสอบอยู่
หากอักขระตัวแรกคือ '+' หรือถ้าตัวแปรสภาพแวดล้อม POSIXLY_CORRECT ถูกตั้งค่า
การแยกวิเคราะห์จะหยุดทันทีที่พารามิเตอร์ที่ไม่ใช่ตัวเลือกแรก (เช่น พารามิเตอร์ที่ไม่
เริ่มต้นด้วย '-') พบว่าไม่ใช่อาร์กิวเมนต์ option พารามิเตอร์ที่เหลือคือ
ทั้งหมดถูกตีความว่าเป็นพารามิเตอร์ที่ไม่ใช่ตัวเลือก
หากตัวอักษรตัวแรกเป็น '-' พารามิเตอร์ที่ไม่ใช่ตัวเลือกจะถูกส่งออกที่ตำแหน่งที่
พวกเขาถูกพบ; ในการทำงานปกติ ทั้งหมดจะถูกรวบรวมที่ส่วนท้ายของเอาต์พุตหลังจาก a
'--' สร้างพารามิเตอร์แล้ว โปรดทราบว่าสิ่งนี้ '--' ยังคงสร้างพารามิเตอร์ แต่
มันจะเป็นพารามิเตอร์สุดท้ายในโหมดนี้เสมอ
ความเข้ากันได้
รุ่นนี้ รับ(1) เขียนให้เข้ากันได้กับเวอร์ชันอื่นมากที่สุด
โดยปกติคุณสามารถแทนที่ด้วยเวอร์ชันนี้โดยไม่ต้องแก้ไขใด ๆ และด้วย
ข้อดีบางประการ
หากอักขระตัวแรกของพารามิเตอร์แรกของ getopt ไม่ใช่ '-', รับ เข้าไปใน
โหมดความเข้ากันได้ มันจะตีความพารามิเตอร์แรกเป็นสตริงของตัวเลือกสั้น ๆ
และอาร์กิวเมนต์อื่นๆ ทั้งหมดจะถูกแยกวิเคราะห์ มันยังคงทำการสับเปลี่ยนพารามิเตอร์ (เช่น all
พารามิเตอร์ที่ไม่ใช่ตัวเลือกจะถูกส่งออกในตอนท้าย) เว้นแต่ตัวแปรสภาพแวดล้อม
POSIXLY_CORRECT ถูกตั้งค่า
ตัวแปรสภาพแวดล้อม GETOPT_COMPATIBLE กองกำลัง รับ เข้าสู่โหมดความเข้ากันได้ การตั้งค่า
ทั้งตัวแปรสภาพแวดล้อมนี้และ POSIXLY_CORRECT ให้ความเข้ากันได้ 100% สำหรับ
โปรแกรม 'ยาก' โดยปกติแล้ว ไม่จำเป็น
ในโหมดความเข้ากันได้ ชั้นนำ '-'และ'+' อักขระในสตริงตัวเลือกแบบสั้นคือ
ละเว้น
กลับ รหัส
รับ ส่งกลับรหัสข้อผิดพลาด 0 สำหรับการแยกวิเคราะห์ที่ประสบความสำเร็จ 1 if รับ(3) ส่งคืนข้อผิดพลาด 2 ถ้ามัน
ไม่เข้าใจพารามิเตอร์ของตัวเอง 3 หากเกิดข้อผิดพลาดภายในเหมือนหน่วยความจำไม่เพียงพอ
และ 4 ถ้าเรียกว่าด้วย -T.
ตัวอย่าง
สคริปต์ตัวอย่างสำหรับ (ba)sh และ (t)csh มีให้พร้อมกับ รับ(1) จำหน่าย และ
สามารถเลือกติดตั้งใน /usr/share/getopt/ or /usr/share/doc/ ใน util-linux
ไดเร็กทอรีย่อย
และพวกเรา
POSIXLY_CORRECT
ตัวแปรสภาพแวดล้อมนี้ถูกตรวจสอบโดย รับ(3) กิจวัตรประจำวัน หากตั้งไว้
การแยกวิเคราะห์จะหยุดทันทีที่พบพารามิเตอร์ที่ไม่ใช่ตัวเลือกหรือตัวเลือก
การโต้แย้ง. พารามิเตอร์ที่เหลือทั้งหมดจะถูกตีความว่าเป็นพารามิเตอร์ที่ไม่ใช่ตัวเลือกด้วย
ไม่ว่าพวกเขาจะเริ่มต้นด้วย '-'.
GETOPT_COMPATIBLE
กองกำลัง รับ เพื่อใช้รูปแบบการโทรครั้งแรกตามที่ระบุใน เรื่องย่อ.
ใช้ getopt ออนไลน์โดยใช้บริการ onworks.net