У меня есть .sh, который читается в строках из .txt, которые будут использоваться в качестве параметров для другого сценария оболочки. Каждая из двух строк работает параллельно. В настоящее время: мой текущий код будет читаться во ВСЕХ строках файла (по 2 за один раз) для первого вызова .sh, затем ВСЕ строки для второго вызова .sh, затем ВСЕ для последнего вызова .shПараллельная обработка во время цикла
Проблема: Мне нужно сначала две строки в первом .sh, затем в секундах .sh, затем в последний .sh..THEN цикл назад и процесс со следующими двумя строками HHEEELLLPPP !!! :)
Сейчас:
cat XXXXX.txt | while read line; do
export step=${line//\"/}
export step=ExecuteModel_${step//,/_}
export pov=$line
$dir"/hpm_ws_client.sh" processCalcScriptOptions "$appName" "$pov" "$layers" "$stages" "" "$stages" "$stages" FALSE > "$dir""/"$step"_ProcessID.log"
$dir_shell_model"/check_process_status.sh" "$dir" "$step" > "$dir""/""$step""_Monitor.log" &
$dir"/hpm_ws_client.sh" processCalcScriptOptions "$appName" "$pov" "$layers" "" "" "$stage_final" "" TRUE > "$dir""/""$step""_ProcessID.log"
$dir"/check_process_status.sh" "$dir" "$step" > "$dir""/""$step""_Monitor.log" &
$dir"/hpm_ws_client.sh" processGenealogyExecutionPaths "$appName" "$pov" "$layers" "$genPath_01" > "$dir""/""$step""_ProcessID.log"
$dir"/check_process_status.sh" "$dir" "$step" > "$dir""/""$step""_Monitor.log" &
if ((++i % 2 == 0))
then
echo "Waiting..."
wait
fi
done
Очень сложно понять, что вы пытаетесь сделать - можете ли вы упростить его, а также показать файлы (файлы), которые вы пытаетесь прочитать. Мне кажется, что способ сделать это с помощью «GNU Parallel», который может читать 1 или несколько аргументов из одного или нескольких входных файлов и обрабатывать столько за раз, сколько захотите.Вероятно, он удалит все ваши циклы и сделает ваш код в несколько раз меньше - я угадываю около 3-5 строк в целом - и более эффективен и читаем. –
@MarkSetchell, я бы предпочел предположить флаг GNU xargs '-P' задолго до GNU Parallel - гораздо более простая реализация (при использовании с' -0' или '-d $ '\ n'', чтобы избежать связанных с кодированием к совместимости с некоторыми из наихудших бит POSIX), в «явно не ошибках» и «нет очевидных ошибок». –
Тангенциально, что со всеми '' 'экспортом''? При быстром просмотре ни одна из этих переменных не должна экспортироваться, если только требуемые инструменты не требуют их; но, конечно, ничего не нужно экспортировать более одного раза. – tripleee