Bash cho phép sử dụng: cat <(echo "$FILECONTENT")
Làm thế nào để ống đầu vào cho một Bash vòng lặp while và giữ gìn các biến sau khi vòng lặp kết thúc
Bash cũng cho phép sử dụng: while read i; do echo $i; done </etc/passwd
kết hợp trước hai điều này có thể được sử dụng: echo $FILECONTENT | while read i; do echo $i; done
Vấn đề cuối cùng là nó tạo ra sub-shell và sau khi vòng lặp while kết thúc biến i
không thể truy cập được nữa.
Câu hỏi của tôi là:
Làm thế nào để đạt được một cái gì đó như thế này: while read i; do echo $i; done <(echo "$FILECONTENT")
hay nói cách khác: Làm thế nào tôi có thể chắc chắn rằng i
sống sót trong khi vòng lặp?
Xin lưu ý rằng tôi biết bao quanh trong khi tuyên bố thành {}
nhưng điều này không giải quyết vấn đề (tưởng tượng rằng bạn muốn sử dụng vòng lặp while trong chức năng và trở i
biến)
http://mywiki.wooledge.org/BashFAQ/024 – tripleee
Related: https://stackoverflow.com/questions/37229058/append-to-an-array-variable-from-a-pipeline-command. Giải thích tất cả các tùy chọn bao gồm thay thế quy trình được đề cập dưới đây và 'lastpipe' và ưu và khuyết điểm của chúng. –
Liên quan: [Một biến được sửa đổi bên trong một vòng lặp while không được ghi nhớ] (https://stackoverflow.com/questions/16854280/a-variable-modified-inside-a-while-loop-is-not-remembered). – codeforester