คู่มือเริ่มต้นใช้งานสำหรับ BASH - พารามิเตอร์การป้อนข้อมูล

ยินดีต้อนรับสู่ส่วนที่ 2 ของคู่มือผู้เริ่มต้นใช้งาน BASH series ซึ่งเป็นเอกลักษณ์เฉพาะที่เป็นบทเรียนกวดวิชาเดียวที่เขียนโดยผู้เริ่มต้นสำหรับผู้เริ่มต้น

ผู้อ่านคู่มือนี้จะสร้างความรู้ของพวกเขาในขณะที่ฉันสร้างความรู้ของฉันและหวังว่าในตอนท้ายของมันทั้งหมดที่เราจะสามารถที่จะเขียนสคริปต์ฉลาดบางอย่างเป็นธรรม

เมื่อสัปดาห์ที่แล้วผมได้ เขียนบทแรก ที่แสดงคำว่า "Hello World" เนื้อหาครอบคลุมหัวข้อต่างๆเช่นตัวแก้ไขข้อความวิธีเปิดหน้าต่างเทอร์มินัลตำแหน่งสคริปต์ของคุณวิธีการแสดงคำว่า "Hello World" และจุดปลีกย่อยบางอย่างเกี่ยวกับอักขระ Escape เช่นคำพูด ("")

สัปดาห์นี้ฉันจะครอบคลุมพารามิเตอร์อินพุท มีคำแนะนำอื่น ๆ ที่สอนการจัดเรียงสิ่งนี้ แต่ฉันพบว่าพวกเขากระโดดลงในบางสิ่งที่ค่อนข้างต่ำและอาจให้ข้อมูลมากเกินไป

พารามิเตอร์คืออะไร?

ในสคริปต์ "Hello World" จากบทแนะนำล่าสุดทำให้ทุกอย่างคงที่ บทภาพยนตร์ไม่ได้ทำอะไรมากนัก

เราจะปรับปรุงสคริปต์ "Hello World" ได้อย่างไร?

สิ่งที่เกี่ยวกับสคริปต์ที่ทักทายคนที่ทำงานได้หรือไม่ แทนที่จะพูดว่า "Hello World" จะมีข้อความว่า "Hello Gary", "Hello Tim" หรือ "Hello Dolly"

หากไม่มีความสามารถในการรับค่าอินพุทเราจะต้องเขียนสคริปต์ 3 อันคือ "hellogary.sh", "hellotim.sh" และ "hellodolly.sh"

โดยอนุญาตให้สคริปต์ของเราอ่านพารามิเตอร์อินพุทเราสามารถใช้สคริปต์เพื่อทักทายใครก็ได้

เมื่อต้องการทำเช่นนี้ให้เปิดหน้าต่างเทอร์มินัล (CTRL + ALT + T) และไปที่โฟลเดอร์สคริปต์ของคุณโดยพิมพ์ข้อความต่อไปนี้: ( about cd command )

สคริปต์ cd

สร้างสคริปต์ใหม่ที่เรียกว่า greetme.sh โดยพิมพ์ คำสั่ง ต่อไปนี้: ( about touch command )

แตะ greetme.sh

เปิดสคริปต์ในโปรแกรมแก้ไขที่คุณโปรดปรานโดยพิมพ์ข้อความต่อไปนี้: ( about nano command )

nano greetme.sh

ป้อนข้อความต่อไปนี้ภายใน nano:

#! / bin / bash echo "สวัสดี $ @"

กด CTRL และ O เพื่อบันทึกไฟล์แล้วกด CTRL และ X เพื่อปิดไฟล์

เมื่อต้องการเรียกใช้สคริปต์ให้ป้อนข้อมูลต่อไปนี้ลงในบรรทัดคำสั่งแทนที่ด้วยชื่อของคุณ

sh greetme.sh

ถ้าฉันเรียกใช้สคริปต์ด้วยชื่อของฉันจะแสดงคำว่า "Hello Gary"

บรรทัดแรกมีบรรทัด #! / bin / bash ซึ่งใช้เพื่อระบุไฟล์เป็นสคริปต์ทุบตี

บรรทัดที่สองใช้คำสั่ง echo เพื่อสะท้อนคำ hello และมีสัญกรณ์ $ @ แปลก ( เกี่ยวกับคำสั่ง echo )

$ @ ขยายเพื่อแสดงพารามิเตอร์ทุกตัวที่ป้อนพร้อมกับชื่อสคริปต์ ถ้าคุณพิมพ์ "sh greetme.sh tim" คำว่า "hello tim" จะปรากฏขึ้น หากคุณพิมพ์ "greetme.sh tim smith" จะปรากฏคำว่า "hello tim smith"

มันอาจจะดีสำหรับสคริปต์ greetme.sh เพียงสวัสดีใช้เพียงชื่อแรก ไม่มีใครบอกว่า "สวัสดี gary newell" เมื่อพวกเขาได้พบกับฉันพวกเขาอาจจะบอกว่า "hello gary" แม้ว่า

ลองเปลี่ยนสคริปต์เพื่อให้ใช้พารามิเตอร์แรกเท่านั้น เปิดสคริปต์ greetme.sh ใน nano โดยพิมพ์ข้อความต่อไปนี้:

nano greetme.sh

เปลี่ยนสคริปต์เพื่อให้อ่านดังนี้:

#! / bin / bash echo "สวัสดี $ 1"

บันทึกสคริปต์โดยการกด CTRL และ O แล้วออกโดยการกด CTRL และ X.

เรียกใช้สคริปต์ตามที่แสดงด้านล่าง (แทนที่ชื่อของฉันกับคุณ):

g greetme.sh gary newell

เมื่อคุณเรียกใช้สคริปต์ก็จะพูดว่า "สวัสดี gary" (หรือหวังว่า "สวัสดี" และชื่อของคุณคืออะไร

เครื่องหมาย 1 หลังจากสัญลักษณ์ $ บอกว่าเป็นคำสั่ง echo ให้ใช้พารามิเตอร์ตัวแรก ถ้าคุณแทนที่ $ 1 ด้วย $ 2 แล้วจะแสดง "hello newell" (หรือนามสกุลของคุณคืออะไร)

บังเอิญถ้าคุณแทนที่ $ 2 กับ $ 3 และเรียกใช้สคริปต์ที่มีเพียง 2 พารามิเตอร์ผลลัพธ์ก็จะเป็น "Hello"

เป็นไปได้ที่จะแสดงและจัดการหมายเลขของพารามิเตอร์ที่ป้อนจริงและในบทแนะนำในภายหลังฉันจะแสดงวิธีการใช้การนับค่าสำหรับวัตถุประสงค์ในการตรวจสอบ

เมื่อต้องการแสดงจำนวนพารามิเตอร์ที่ป้อนให้เปิดสคริปต์ greetme.sh (nano greetme.sh) และแก้ไขข้อความดังต่อไปนี้

#! / bin / bash echo "คุณป้อน $ # ชื่อ" echo "hello $ @"

กด CTRL และ O เพื่อบันทึกสคริปต์และ CTRL และ X เพื่อออกจาก nano

$ # ในบรรทัดที่ 2 แสดงจำนวนพารามิเตอร์ที่ป้อน

ทั้งหมดนี้เป็นเรื่องแปลกใหม่ แต่ไม่ค่อยมีประโยชน์ ใครต้องการสคริปต์ที่แสดง "สวัสดี"?

การใช้งานจริงของ echo statement คือการให้ผลลัพธ์ที่ละเอียดและมีความหมายแก่ผู้ใช้ ถ้าคุณสามารถจินตนาการได้ว่าคุณต้องการทำอะไรบางอย่างที่ซับซ้อนซึ่งเกี่ยวข้องกับการกระทืบหมายเลขที่ร้ายแรงและการจัดการไฟล์ / โฟลเดอร์จะเป็นประโยชน์ต่อการแสดงต่อผู้ใช้ว่ากำลังเกิดอะไรขึ้นในแต่ละขั้นตอน

ในทางตรงกันข้ามพารามิเตอร์อินพุตจะทำให้สคริปต์ของคุณโต้ตอบได้ หากไม่มีพารามิเตอร์การป้อนข้อมูลคุณจะต้องใช้สคริปต์หลายสิบรายการในการทำสิ่งที่คล้ายกันทั้งหมด แต่มีชื่อแตกต่างกันเล็กน้อย

ด้วยเหตุนี้ในใจมีพารามิเตอร์การป้อนข้อมูลที่เป็นประโยชน์อื่น ๆ ซึ่งเป็นความคิดที่ดีที่จะทราบและฉันจะรวมข้อมูลทั้งหมดไว้ในข้อมูลโค้ดชุดเดียว

เปิดสคริปต์ greetme.sh ของคุณและแก้ไขดังนี้

#! / bin / bash echo "ชื่อไฟล์: $ 0" echo "Process ID: $$" echo "---------------------------- --- "echo" คุณป้อน $ # ชื่อ "echo" hello $ @ "

กด CTRL และ O เพื่อบันทึกไฟล์และ CTRL และ X เพื่อออก

ตอนนี้เรียกใช้สคริปต์ (แทนที่ด้วยชื่อของคุณ)

sh greetme.sh

ขณะที่สคริปต์แสดงข้อมูลต่อไปนี้:

ชื่อไฟล์: greetme.sh รหัสกระบวนการ: 18595 ------------------------------ คุณป้อน 2 ชื่อสวัสดี gary newell

$ 0 ในบรรทัดแรกของสคริปต์จะแสดงชื่อของสคริปต์ที่คุณใช้อยู่ โปรดทราบว่าเป็นศูนย์ดอลลาร์และไม่ใช่ดอลลาร์ o

$$ ในบรรทัดที่สองจะแสดงรหัสกระบวนการของสคริปต์ที่คุณกำลังทำงานอยู่ ทำไมถึงเป็นประโยชน์? ถ้าคุณเรียกใช้สคริปต์ในเบื้องหน้าคุณสามารถยกเลิกได้โดยการกด CTRL และ C ถ้าคุณเรียกใช้สคริปต์ในพื้นหลังและเริ่มลูปและทำสิ่งเดียวกันซ้ำแล้วซ้ำอีกหรือเริ่มก่อให้เกิดความเสียหายกับระบบของคุณคุณจะต้องใช้ ที่จะฆ่ามัน

ในการฆ่าสคริปต์ที่ทำงานอยู่ในพื้นหลังคุณต้องใช้รหัสกระบวนการของสคริปต์ จะไม่ดีถ้าสคริปต์ให้รหัสกระบวนการเป็นส่วนหนึ่งของผลลัพธ์ ( เกี่ยวกับ ps และฆ่าคำสั่ง )

สุดท้ายก่อนที่ฉันจะจบด้วยหัวข้อนี้ฉันต้องการพูดคุยเกี่ยวกับที่เอาท์พุทไป ทุกครั้งที่มีการเรียกใช้สคริปต์แล้วผลลัพธ์ที่ได้จะปรากฏบนหน้าจอ

เป็นเรื่องปกติสำหรับเอาท์พุทสคริปต์จะถูกเขียนลงในไฟล์ที่ส่งออก เมื่อต้องการทำเช่นนี้ให้เรียกใช้สคริปต์ของคุณดังนี้:

sh greetme.sh gary> greetme.log

สัญลักษณ์> ในคำสั่งดังกล่าวจะแสดงข้อความ "hello gary" ในไฟล์ชื่อ greetme.log

ทุกครั้งที่คุณเรียกใช้สคริปต์ด้วยสัญลักษณ์> จะเขียนทับเนื้อหาของไฟล์ที่ส่งออก หากต้องการเพิ่มไฟล์ให้แทนที่> ด้วย >>

สรุป

ขณะนี้คุณควรจะสามารถเขียนข้อความลงในหน้าจอและยอมรับพารามิเตอร์อินพุทได้