วิธีใช้คำสั่ง readarray เพื่ออ่าน 2D Array ใน Bash

Withi Chi Kha Sang Readarray Pheux Xan 2d Array Ni Bash



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 3
4 5 6
7 8 9


นี่คือสคริปต์ทุบตีที่สมบูรณ์ซึ่งสาธิตการใช้คำสั่ง 'readarray':

#!/bin/bash
# อ่านบรรทัดจากไฟล์ลงในอาร์เรย์
อ่าน -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 มิติได้