Bash เป็นภาษาสคริปต์เชลล์ที่นิยมใช้ในระบบปฏิบัติการ Linux และ Unix มีชุดคำสั่งและฟีเจอร์มากมายที่ทำให้การทำงานซ้ำๆ เป็นไปโดยอัตโนมัติ 'readarray' เป็นหนึ่งในคำสั่งที่มีประโยชน์ที่สุดใน Bash ด้วยคำสั่งนี้ บรรทัดจากไฟล์สามารถอ่านเป็นอาร์เรย์ 2 มิติได้ ในโพสต์นี้ เราจะพูดถึงวิธีการอ่านบรรทัดจากไฟล์ไปยังอาร์เรย์ 2 มิติโดยใช้คำสั่ง “readarray” ของ Bash
ใช้ 'readarray' ใน Bash
คำสั่ง 'readarray' อ่านบรรทัดจากไฟล์หรืออินพุตมาตรฐานและกำหนดให้กับอาร์เรย์ ไวยากรณ์สำหรับการใช้ 'readarray' มีดังนี้:
อ่าน [ -d แบ่งปัน ] [ -n นับ ] [ - ต้นกำเนิด ] [ -s นับ ] [ -t ] อาร์เรย์
ตัวเลือกที่ใช้ได้สำหรับคำสั่ง 'readarray' คือ:
'-d แบ่งปัน': ตั้งค่าตัวคั่นเพื่อใช้เมื่อแยกบรรทัดออกเป็นองค์ประกอบอาร์เรย์ และตามค่าเริ่มต้น ตัวคั่นคืออักขระขึ้นบรรทัดใหม่
'-n COUNT': ระบุจำนวนบรรทัดสูงสุดที่จะอ่านในอาร์เรย์
'-O กำเนิด' : ตั้งค่าดัชนีเริ่มต้นของอาร์เรย์
'-s COUNT': ระบุจำนวนบรรทัดที่จะข้ามก่อนที่จะอ่านในอาร์เรย์
'-t': ลบอักขระขึ้นบรรทัดใหม่ต่อท้ายจากแต่ละบรรทัดที่อ่านในอาร์เรย์
นี่คือตัวอย่างของการใช้ 'readarray' เพื่ออ่านบรรทัดจากไฟล์ไปยังอาร์เรย์ 2 มิติ และฉันได้สร้าง ทดสอบไฟล์. txt ซึ่งมีเนื้อหาดังนี้
1 2 34 5 6
7 8 9
นี่คือสคริปต์ทุบตีที่สมบูรณ์ซึ่งสาธิตการใช้คำสั่ง 'readarray':
# อ่านบรรทัดจากไฟล์ลงในอาร์เรย์
อ่าน -t เส้น < ทดสอบไฟล์. txt
# ประกาศอาร์เรย์ 2 มิติที่มี 3 แถวและ 3 คอลัมน์
ประกาศ -ก อาร์เรย์
# วนซ้ำบรรทัดและแยกแต่ละบรรทัดออกเป็นองค์ประกอบ
สำหรับ ฉัน ใน ' ${!line[@]} ' ; ทำ
ไอเอฟเอส = ' ' อ่าน -ร -ก องค์ประกอบ <<< ' ${บรรทัด[i]} '
สำหรับ เจ ใน ' ${!องค์ประกอบ[@]} ' ; ทำ
ถ้า [ [ -น ' ${องค์ประกอบ[j]} ' ] ] ; แล้ว
อาร์เรย์ [ $i , $เจ ] = ${องค์ประกอบ[j]}
เป็น
เสร็จแล้ว
เสร็จแล้ว
# พิมพ์อาร์เรย์
สำหรับ ( ( ฉัน = 0 ;ฉัน < 3 ;i++ ) ) ; ทำ
สำหรับ ( ( เจ = 0 ;ญ < 3 ;j++ ) ) ; ทำ
เสียงสะท้อน -น ' ${อาร์เรย์[$i,$j]} '
เสร็จแล้ว
เสียงสะท้อน
เสร็จแล้ว
ก่อนอื่นฉันได้ประกาศอาร์เรย์ 2 มิติที่เรียกว่า 'อาร์เรย์' จากนั้นใช้คำสั่ง 'readarray' เพื่ออ่านบรรทัดจากไฟล์ชื่อ 'testfile.txt' ลงในอาร์เรย์ 'บรรทัด' ต่อไป โค้ดจะวนซ้ำอาร์เรย์ 'เส้น' และแยกแต่ละบรรทัดออกเป็นองค์ประกอบโดยใช้คำสั่ง 'IFS' และ 'read'
หลังจากนั้นจะจัดเก็บองค์ประกอบในอาร์เรย์ 2 มิติ 'อาร์เรย์' จากนั้นใช้คำสั่ง read เพื่อแยกแต่ละบรรทัดออกเป็นองค์ประกอบ ตอนนี้แต่ละองค์ประกอบถูกกำหนดให้กับองค์ประกอบที่สอดคล้องกันในอาร์เรย์ 'อาร์เรย์' และสุดท้าย เนื้อหาของอาร์เรย์ 'อาร์เรย์' ที่ใช้ซ้อนกันสำหรับการวนซ้ำจะถูกพิมพ์
บทสรุป
คำสั่ง 'readarray' ทำให้ง่ายต่อการจัดการข้อมูลจำนวนมากในสคริปต์ Bash เมื่อทำตามตัวอย่างในบทความนี้ คุณจะเริ่มใช้ 'readarray' ในสคริปต์ Bash ของคุณเองเพื่ออ่านบรรทัดจากไฟล์และประมวลผลเป็นอาร์เรย์ 2 มิติได้