В тот момент, когда вы запускаете команду ps
, процесс уже завершился (, вы обрабатываете его код возврата, верно?)
Просто измените логику, чтобы вы запускали команду ps
раньше в скрипте, перед wait
и сохраняли ее в переменной:
for job in $(jobs -p); do
process_info=$(ps -p "${job}" -o args=)
wait "${job}" || {
code=$?
echo "Job running [${process_info}] failed with exit code ${code}." >&2
exit 1
}
done
Используйте встроенную функциюread
для чтения строки и (дополнительно )разделения ее на слова.
while read -r namespace buildconfig ignored; do
echo "this namespace is: $namespace and this buildconfig is: $buildconfig"
done <test.txt
Если вы хотите обрабатывать строки параллельно, вы можете использовать GNU parallel .
parallel '
line={};
a=($=line); namespace=$a[1] buildconfig=$a[2];
echo "this namespace is: $namespace and this buildconfig is: $buildconfig"'