Có hai cách đọc một dòng tập tin bằng cách dòng mà tôi muốn thảo luận ở đây:Bash trong khi vòng lặp mà đọc dòng tập tin bằng dòng
#!/bin/bash
while read line
do
echo-e "$ line \ n"
done <file.txt
và
#!/bin/bash
exec 3<file.txt
while read line
do
echo-e "$ line \ n"
done
phiên bản Vì vậy, đầu tiên hoạt động tốt nhưng tôi không hiểu cơ chế làm việc trong khi lặp lại với tệp. Nhưng cơ chế của phiên bản thứ hai tôi hiểu. Nhưng ở đây tôi không hiểu tại sao nó treo và không in bất cứ thứ gì.
Liệu '<& 3' trên' tác dòng read'? Nó từng là trường hợp, trở lại trong những ngày cũ xấu của vỏ Bourne thực sự, việc chuyển hướng sẽ được thực hiện mỗi lần vòng lặp, vì vậy bạn có các hiệu ứng vui nhộn (giống như tệp được đóng trên mỗi lần lặp). Tôi cũng có thể tin rằng nó đã được sửa đổi kể từ đó để mọi thứ hoạt động tốt hơn một chút. * FWIW *: khi tôi thử 'bash' trên MacOS X, với:' while read line
Cảm ơn Jon, tôi đã thử với kịch bản trên, nó hoạt động trên mac của tôi. http://cl.ly/ClDf nhưng đó là một số thông tin hữu ích. Tôi nhớ nó. Tôi vẫn còn rất nhiều mới để bash.Vừa học 'awk' và' sed'. Nhưng sẽ bắt đầu một số cuốn sách về cơ bản bash. :) –
Đã chỉnh sửa câu trả lời để có '<& 3' sau câu lệnh' done' thay vì câu lệnh 'read'. –