บทแนะนำสั้น ๆ นี้จะสอนให้คุณแจ้งให้ผู้ใช้พิมพ์อินพุตจากสคริปต์ Bash/Shell ของคุณ เรียนรู้ง่าย ทำง่าย อ่านต่อไป!
อ่าน คำสั่ง
หากต้องการอ่านข้อมูลที่ผู้ใช้ป้อนในเชลล์สคริปต์ ให้ใช้ชื่อ read สั่งการ. มีรูปแบบดังนี้:
read OPTIONS VARIABLES
โปรดทราบว่า:
- อ่าน คำสั่งจะอ่านบรรทัดจาก อินพุตมาตรฐาน และแบ่งข้อมูลออกเป็นช่องต่างๆ
- โดยปกติ อินพุตมาตรฐาน เป็นเทอร์มินัลที่มีอินพุตจากแป้นพิมพ์ แต่คุณยังไปป์หรือเปลี่ยนเส้นทางอินพุตไปที่ อ่าน คำสั่ง
- จากมุมมองของผู้ใช้ พวกเขาจะได้รับข้อความแจ้งและต้องป้อนบางอย่างตามด้วยการกดปุ่ม ENTER
- ตัวเลือก ควรเป็นรายการแฟล็กตัวเลือกจากตารางด้านล่างซึ่งจะปรับเปลี่ยนพฤติกรรมของ อ่าน คำสั่ง
- ตัวแปร เป็นรายการค่าที่จะส่งผ่านไปยังสคริปต์คั่นด้วยช่องว่าง
- ถ้า -p ใช้ตัวเลือกนี้ คุณสามารถจับคู่สิ่งนี้กับรายการข้อความแจ้งที่ตรงกันเพื่อบอกผู้ใช้ว่าควรป้อนอะไร
- เป็นหลาย ตัวแปร สามารถระบุได้โดยเว้นวรรค ค่าใดๆ ที่คุณต้องการป้อน ซึ่งรวมถึงช่องว่างหรืออักขระพิเศษอื่นๆ ควรยกมา
อ่าน ตัวเลือกที่ใช้กันทั่วไป | |
---|---|
-a อาร์เรย์ | กำหนดคำที่อ่านให้กับดัชนีตามลำดับของตัวแปรอาร์เรย์ ARRAY เริ่มต้นที่ศูนย์ |
-p พร้อมท์ | ส่งออกสตริง PROMPT โดยไม่ต้องขึ้นบรรทัดใหม่ก่อนพยายามอ่าน |
-r | ไม่อนุญาตให้แบ็กสแลชหลีกเลี่ยงอักขระใดๆ |
-s | อย่าสะท้อนอินพุตที่มาจากเทอร์มินัล |
-t หมดเวลา | หมดเวลาและส่งคืนความล้มเหลวหากไม่ได้อ่านบรรทัดอินพุตทั้งหมดภายใน TIMEOUT วินาที |
ตามปกติ คุณจะได้รับคู่มือผู้ใช้สำหรับอ่าน คำสั่ง รวมถึงรายการตัวเลือกทั้งหมดที่มี โดยการเรียกใช้:
man read
พรอมต์สำหรับอินพุตโดยใช้คำสั่งอ่าน
ต่อไปนี้คือตัวอย่างการใช้ read คำสั่งเพื่อยอมรับอินพุตของผู้ใช้ในสคริปต์ Bash/Shell
แต่ก่อนอื่น…
'#!' ใน Linux Shell Scripts คืออะไร
เพิ่งได้รับข้อมูล
นี่คือการใช้งานคำสั่งที่ง่ายที่สุด – เพียงแค่อ่านค่าเดียวจากอินพุต:
#!/bin/bash read word echo You just typed $word
ด้านบน อินพุตจะถูกอ่านเป็นตัวแปรชื่อ $word แล้วแสดงโดยใช้ปุ่ม echo สั่งการ. อีกครั้งที่นั่น จะไม่มีการแจ้ง – หน้าจอจะหยุดและรอให้ผู้ใช้พิมพ์อะไรบางอย่าง ตามด้วยปุ่ม ENTER – จากนั้นสคริปต์จะกลับมาทำงานต่อด้วยอินพุตที่กำหนด
หากต้องการรับค่าอินพุตหลายค่า ให้เพิ่มตัวแปรลงในคำสั่งโดยคั่นด้วยช่องว่าง:
#!/bin/bash read word1 word2 echo You just typed $word1 followed by $word2
พร้อมท์ให้ใส่ข้อความ
การที่หน้าจอหยุดชั่วคราวเพื่อรอการป้อนข้อมูลนั้นไม่เป็นมิตรกับผู้ใช้จริงๆ โดยปกติ คุณจะต้องบอกผู้ใช้ว่าพวกเขาควรจะป้อนอะไร เช่น ชื่อผู้ใช้หรือรหัสผ่าน ตัวอย่างต่อไปนี้ทำอย่างนั้น:
#!/bin/bash read -p 'Username: ' username read -sp 'Password: ' password echo Your username is $username, we will not display your password
ด้านบน -p ใช้ตัวเลือกเพื่อแสดงพรอมต์ - ข้อความที่แสดงแจ้งให้ผู้ใช้ทราบว่าควรป้อนข้อมูลใดสำหรับค่าของตัวแปรแต่ละตัว
คุณยังสามารถดู -s ตัวเลือกที่ใช้สำหรับตัวแปรรหัสผ่าน ซึ่งจะปิดเสียงอินพุตที่พิมพ์ไว้เพื่อไม่ให้แสดง
พรอมต์สำหรับการป้อนข้อมูลหลายรายการด้วยข้อความ
คุณสามารถแจ้งแล้วอ่านค่าได้หลายค่า:
#!/bin/bash read -p 'Please type your first and last name: ' first last echo Your name is $first $last
แจ้งว่าใช่/ไม่ใช่
วิธีถามคำถามใช่/ไม่ใช่ง่ายๆ กับผู้ใช้โดยใช้ while loop และ คำชี้แจงกรณี . สตริงใดๆ ที่ขึ้นต้นด้วย y หรือ ใช่ จะตีความว่า ใช่ * สตริงใดๆ ที่ขึ้นต้นด้วย n หรือ ไม่มี จะตีความว่า ไม่ :
#!/bin/bash while true; do read -p "Do you wish to perform this action?" yesno case $yesno in [Yy]* ) echo "You answered yes" ;; [Nn]* ) echo "You answered no, exiting" exit ;; * ) echo "Answer either yes or no!";; esac done
สคริปต์จะดำเนินการจนกว่าจะ ไม่ ได้รับ – และสามารถปรับเปลี่ยนได้อย่างง่ายดายเพื่อให้ผู้ใช้ดำเนินการใดๆ