大型Bash阵列或注销终端



我正在使用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

最新更新