我有一个shell脚本,如下所示:
gfortran -o perm_field.exe perm_field.f90
gfortran -o creat_fehm_input.exe creat_fehm_input.f90
gfortran -o wt_concen.exe wt_concen.f90
gfortran -o statistical_analysis.exe statistical_analysis.f90 /usr/lib64/liblapack.so -llapack
#gfortran -o state_write.exe state_write.f90
#gfortran -o creat_ini.exe creat_ini.f90
nsim=8
echo $nsim > nsim.dat
rm kalman_index.dat
rm random_log_perm.dat
rm random_log_perm_initial.dat
rm water_table.dat
for j in {1..3} ; do
echo $j > kalman_index.dat
./creat_fehm_input.exe
for i in `seq 1 $nsim` ; do
echo $i
echo $i > isim.dat
./perm_field.exe
./xfehm_v3.00intl64
sed '1d' unsat_flow..00002_sca_node.dat > test
mv test scalar.dat
./wt_concen.exe
done
cp Measurement_25/Direct/meas_s$j.dat meas_s.dat
#cp meas_s$j.dat meas_s.dat
#./statistical_analysis.exe
./calc_wt.R
mv water_table.dat water_table$j.dat
cp random_log_perm_updated.dat random_log_perm$j.dat
cp random_log_perm_updated.dat random_log_perm.dat
done
在我救的队伍里
回声$nsim>nsim.dat
在以后的迭代中,它还添加了一些任意的数字。因为这个,我的整个程序都不起作用。
示例,在第8次迭代之后
$ cat nsim.dat
8
-0.17957768183441541 0.95266884236814386
应该只有8个
编辑:我检查了lsof grep nsim的输出,只有这个脚本正在更改nsim.dat,所以没有其他程序在做任何事情。
最佳答案
是因为这个错误https://gcc.gnu.org/ml/gcc-bugs/2008-12/msg00292.html
在FORTRAN中,如果在写入(*,*)之前使用6个单位号写入文件,则使用6个单位号。
所以这是一个fortran文件问题。换了它后,它能按预期工作。