Я использую скрипт bash, который вызывает скрипт Perl для выполнения задания. Результаты этой работы затем добавляются к массиву в bash и суммируются. Распечатывается суммирование после каждого вызова сценария Perl. После того, как скрипт работает некоторое время, он прекращает печать суммы без сообщения об ошибке.Large Bash Arrays или Log Out Termination
Пример:
for i in {1..1999};
do
fi="$(printf "%06d" $i)_sys6_uw_lipid_data.pdb"
r_sq_value=$(perl r_value.pl "$fi")
all_r_sq_values+=($r_sq_value)
sum=$(
awk 'BEGIN {t=0; for (i in ARGV) t+=ARGV[i]; print t}' "${all_r_sq_values[@]}"
)
echo "$sum <--- SUM"
done
Скрипт работает просто отлично на некоторое время, но после того, как долгое время сценарий останавливает печать сумму.
Пример:
... skipping ...
5.20884e+06 <--- SUM
5.22297e+06 <--- SUM
5.23754e+06 <--- SUM
5.25246e+06 <--- SUM
5.26714e+06 <--- SUM
5.28179e+06 <--- SUM
5.29737e+06 <--- SUM
<--- SUM
<--- SUM
<--- SUM
<--- SUM
<--- SUM
Без ошибки я не уверен, если это из-за сценария или потому что компьютер прекращает работу из-за этого идти спать. Все файлы данных, которые он читает, полны и работают индивидуально с Perl-скриптом.
Любое предложение или комментарии оценены.
Спасибо
'fi' не кажется, хорошее имя переменной (см if..fi) –
У меня есть правильна«фи»переменной, но сценарий по-прежнему имеет ту же проблему. –
Я подозреваю, что вы достигли предела в списке параметров awk. Достаточно легко добавить все элементы массива без использования awk, и я предлагаю вам сделать это вместо кода оболочки. – Borodin