我可以用任何其他語言做到這一點,但用Bash我看起來很廣泛,找不到答案。手動迭代文件的一行| bash
我需要在腳本中手動增加$line
。例如:
for line in `cat file`
do
foo()
foo_loop(condition)
{
do_something_to_line($line)
}
done
如果你注意到,每一次迭代foo_loop
,$line
保持不變。我需要在那裏迭代$line
,並確保原始的for循環僅運行文件中的行數。
我想過使用不同的循環找到文件中的行數,並在foo()
的內部循環中迭代行變量。
任何想法?
編輯:
對不起,太模糊了。
這裏,我們去:
我試圖讓我的代碼段多次執行(並行執行)
Function foo() # Does something
for line in `cat $temp_file`;
foo($line)
該代碼工作得很好,因爲foo
只是走在線的價值; 但如果我想這樣做:
Function foo() # Does something
for line in `cat $temp_file`;
while (some condition)
foo($line)
end
$line
將等於整個while循環相同的值。我需要使用while
循環更改,然後在返回到for
時繼續。例如:
line = Hi
foo{ echo "$line" };
for line in `cat file`;
while (number_of_processes_running -lt max_number_allowed)
foo($line)
end
如果文件的內容是
Hi \n Bye \n Yellow \n Green \n
示例程序的輸出將被(如果允許的上限數量爲3個)
Hi Hi Hi Bye Bye Bye Yellow Yellow Yellow Green Green Green.
如果我想讓它be
Hi Bye Yellow Green
我希望這個更好。我正在盡力解釋我的問題。
我認爲我們需要一個更清晰的例子來說明你想要完成的事情。 foo()似乎在一個循環內定義了一個shell函數,我不知道你想要什麼。 – 2009-09-21 20:16:54