Я мог бы сделать это на любом другом языке, но с помощью Bash я посмотрел повсюду и не смог найти ответ.
Мне нужно вручную увеличить $line
в скрипте. Пример:
for line in `cat file`
do
foo()
foo_loop(condition)
{
do_something_to_line($line)
}
done
Если вы заметили, что каждый раз, когда foo_loop
повторяется, $line
остается неизменным. Мне нужно перебрать $line
и убедиться, что в исходном цикле for выполняется только количество строк в файле.
Я думал о том, чтобы найти число строк в файле с помощью другого цикла и перебрать переменную строки во внутреннем цикле foo()
.
Есть идеи?
EDIT:
Извините, что вы так расплывчаты.
Вот и мы:
Я пытаюсь заставить часть моего кода выполняться несколько раз (параллельное выполнение)
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.
Где я хочу, чтобы это было
Hi Bye Yellow Green
Надеюсь, так лучше. Я делаю все возможное, чтобы объяснить мою проблему.