Tôi có thể làm điều này bằng bất kỳ ngôn ngữ nào khác, nhưng với Bash tôi đã nhìn xa và rộng và không thể tìm thấy câu trả lời.Lặp lại thủ công một dòng của một tệp | bash
Tôi cần tăng thủ công $line
trong tập lệnh. Ví dụ:
for line in `cat file`
do
foo()
foo_loop(condition)
{
do_something_to_line($line)
}
done
Nếu bạn nhận thấy, mỗi lần foo_loop
lặp lại, $line
vẫn giữ nguyên. Tôi cần phải lặp lại $line
ở đó và đảm bảo bản gốc cho vòng lặp chỉ chạy số dòng trong tệp.
Tôi đã nghĩ về việc tìm số dòng trong tệp bằng cách sử dụng một vòng lặp khác và lặp lại biến dòng bên trong vòng trong của foo()
.
Bất kỳ ý tưởng nào?
EDIT:
Xin lỗi vì đã quá mơ hồ.
Ở đây chúng ta đi:
Tôi đang cố gắng để thực hiện một phần của mã của tôi thực hiện nhiều lần (thực hiện song song)
Function foo() # Does something
for line in `cat $temp_file`;
foo($line)
Đó là mã làm việc tốt, vì foo
chỉ đang trong giá trị của dòng; nhưng nếu tôi muốn làm điều này:
Function foo() # Does something
for line in `cat $temp_file`;
while (some condition)
foo($line)
end
$line
sẽ tương đương với giá trị trong suốt vòng lặp while. Tôi cần nó để thay đổi với vòng lặp while
, sau đó tiếp tục khi nó quay lại for
. Ví dụ:
line = Hi
foo{ echo "$line" };
for line in `cat file`;
while (number_of_processes_running -lt max_number_allowed)
foo($line)
end
Nếu nội dung của tập tin là
Hi \n Bye \n Yellow \n Green \n
Đầu ra của chương trình ví dụ sẽ được (nếu số lượng tối đa cho phép là 3)
Hi Hi Hi Bye Bye Bye Yellow Yellow Yellow Green Green Green.
Nơi tôi muốn nó là
Hi Bye Yellow Green
Tôi hy vọng thế này tốt hơn. Tôi đang cố hết sức để giải thích vấn đề của mình.
Tôi nghĩ chúng ta cần một ví dụ rõ ràng hơn về những gì bạn đang cố gắng hoàn thành. foo() xuất hiện để xác định một hàm shell trong vòng lặp, mà tôi không chắc chắn là những gì bạn muốn. –