วิธีรวบรวมอาร์เรย์ของเส้นอย่างถูกต้องใน zsh
ฉันคิดว่าต่อไปนี้จะจัดกลุ่มผลลัพธ์ของmy_commandอาร์เรย์หลายบรรทัด: IFS='\n' array_of_lines=$(my_command); ดังนั้น$array_of_lines[1]จะหมายถึงบรรทัดแรกในผลลัพธ์ของmy_command, $array_of_lines[2]ถึงวินาทีและอื่น ๆ อย่างไรก็ตามคำสั่งด้านบนนั้นใช้งานไม่ได้ ดูเหมือนว่าจะแยกเอาท์พุทของmy_commandตัวละครรอบตัวnออกไปตามที่ฉันได้ตรวจสอบด้วยprint -l $array_of_linesซึ่งฉันเชื่อว่ามันจะพิมพ์องค์ประกอบของอาเรย์ทีละบรรทัด ฉันได้ตรวจสอบสิ่งนี้ด้วย: echo $array_of_lines[1] echo $array_of_lines[2] ... ในความพยายามครั้งที่สองฉันคิดว่าการเพิ่มevalจะช่วยได้: IFS='\n' array_of_lines=$(eval my_command); แต่ฉันได้ผลลัพธ์เหมือนกันทุกประการ ในที่สุดต่อไปนี้คำตอบเกี่ยวกับองค์ประกอบของรายการที่มีช่องว่างใน zshฉันยังได้ลองใช้การตั้งค่าสถานะการขยายพารามิเตอร์แทนที่จะIFSบอก zsh วิธีการแยกอินพุตและรวบรวมองค์ประกอบเป็นอาร์เรย์เช่น: array_of_lines=("${(@f)$(my_command)}"); แต่ฉันยังคงได้รับผลลัพธ์เดียวกัน (แยกเกิดขึ้นn) ด้วยสิ่งนี้ฉันมีคำถามต่อไปนี้: ไตรมาสที่ 1 อะไรคือ"วิธีการที่เหมาะสม"ในการรวบรวมเอาต์พุตของคำสั่งในอาร์เรย์ของบรรทัด? ไตรมาสที่ 2 ฉันIFSจะระบุให้แยกบรรทัดใหม่ได้อย่างไร ไตรมาสที่ 3 หากฉันใช้การตั้งค่าสถานะการขยายพารามิเตอร์เช่นเดียวกับในความพยายามครั้งที่สามของฉันข้างต้น (เช่นการใช้@f) เพื่อระบุการแยก zsh จะละเว้นค่าเป็นIFSหรือไม่? ทำไมมันไม่ทำงานด้านบน