Bash ดำเนินการแยกคำในสายอักขระทั้งหมดด้วยตัวเอง - ในความเป็นจริงบ่อยกว่าไม่ได้หลีกเลี่ยงปัญหานั้นและเหตุผลในการอ้างถึงมีความสำคัญมาก มันง่ายที่จะใช้ประโยชน์จากสิ่งนั้นในกรณีของคุณ: เพียงแค่ใส่สายของคุณลงในอาร์เรย์โดยไม่ต้องพูดถึงมัน - ทุบตีจะใช้การแบ่งคำเพื่อแยกองค์ประกอบแต่ละอย่าง สมมติว่าสายของคุณจะถูกเก็บไว้ในตัวแปร$str
,
ar=($str) # no quotes!
จะส่งคืนอาร์เรย์ 5 องค์ประกอบ ดัชนีอาเรย์ของคุณคือดัชนีคำของคุณ (นับจาก 0 เช่นในภาษาสคริปต์และการเขียนโปรแกรมส่วนใหญ่) นั่นคือเข้าถึง "อายุ" โดยใช้
${ar[1]} # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address
หรือหากคุณต้องการค้นหาดัชนีองค์ประกอบแยกตามเนื้อหาให้วนรอบอาร์เรย์เช่น
function el_index {
cnt=0; for el in "${ar[@]}"; do
[[ $el == "$1" ]] && echo $cnt && break
((++cnt))
done
}
el_index "Age" # => 1