我有一个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文件问题。换了它后,它能按预期工作。

07-24 12:32