คำถามติดแท็ก associative-array

5
การเชื่อมโยงอาเรย์ของ BASH
มีวิธีพิมพ์อาร์เรย์ทั้งหมด ([คีย์] = ค่า) โดยไม่วนรอบองค์ประกอบทั้งหมดหรือไม่ สมมติว่าฉันได้สร้างอาร์เรย์ที่มีองค์ประกอบบางอย่าง: declare -A array array=([a1]=1 [a2]=2 ... [b1]=bbb ... [f500]=abcdef) ฉันสามารถพิมพ์อาเรย์ทั้งหมดด้วย for i in "${!array[@]}" do echo "${i}=${array[$i]}" done อย่างไรก็ตามดูเหมือนว่าทุบตีรู้วิธีการรับองค์ประกอบอาร์เรย์ทั้งหมดใน "ไป" - คีย์ทั้งสอง ${!array[@]}${array[@]}และค่านิยม มีวิธีในการทุบตีพิมพ์ข้อมูลนี้โดยไม่วนซ้ำหรือไม่? แก้ไข: typeset -p arrayทำอย่างนั้น! อย่างไรก็ตามฉันไม่สามารถลบทั้งคำนำหน้าและคำต่อท้ายในการทดแทนเดียว: a="$(typeset -p array)" b="${a##*(}" c="${b%% )*}" มีวิธีที่สะอาดกว่าในการรับ / พิมพ์เฉพาะส่วน key = value ของเอาต์พุตหรือไม่?

4
อาร์เรย์ที่เกี่ยวข้องในเชลล์สคริปต์
ฉันเห็นเคล็ดลับสำหรับการใช้อาร์เรย์เชื่อมโยงในเชลล์สคริปต์ ตัวอย่างเช่นprint array["apples"]สามารถสคริปต์เป็นecho \$array$keyตำแหน่งที่สำคัญ = แอปเปิ้ล อย่างไรก็ตามไม่มีการพูดถึงวิธีสร้างคีย์เพื่อวนซ้ำแถวลำดับ วิธีเดียวที่ฉันคิดได้ก็คือเก็บคีย์ไว้ในตัวแปรที่คั่นด้วยช่องว่างดังนั้นฉันสามารถใช้ for-loop เพื่อวนซ้ำในอาร์เรย์ ดังนั้นมีวิธีอื่นในการจัดเก็บคีย์เพื่อใช้ในภายหลังหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.