我正在使用bash脚本,该脚本调用Perl脚本来执行作业。然后将该作业的结果附加到bash中的一个数组中并求和。打印每次调用Perl脚本后的总和。脚本运行一段时间后,它将停止打印总和,而不会显示错误消息。
示例:
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脚本。
欢迎提出任何建议或意见。
感谢
将其更改为:
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