ฉันอ่านว่ามันไม่ดีที่จะเขียนสิ่งต่าง ๆ เช่นfor line in $(command)
วิธีที่ถูกต้องดูเหมือนจะเป็นแทน:
command | while IFS= read -r line; do echo $line; done
มันใช้งานได้ดี แต่ถ้าสิ่งที่ฉันต้องการทำซ้ำคือเนื้อหาของตัวแปรไม่ใช่ผลลัพธ์โดยตรงของคำสั่ง
ตัวอย่างเช่นสมมติว่าคุณสร้างไฟล์ต่อไปนี้quickfox
:
The quick brown
foxjumps\ over -
the
lazy ,
dog.
ฉันอยากทำสิ่งนี้:
# This is just for the example,
# I could of course stream the contents to `read`
variable=$(cat quickfox);
while IFS= read -r line < $variable; do echo $line; done; # this is incorrect