0

我想在 bash for 循环中编译一个程序。当我从命令行运行程序时,它会编译,但是当我使用 qsub 时,它不会编译。

有什么我想念的吗?

问候,

约翰

重击文件

  #!/bin/bash
  #$ -N runTest
  #$ -m e
  #$ -r y

  cd /afs/crc.nd.edu/user/private/NDPICMCC/SAFECODE

  thisDir="SAFECODE"
  t=2000

  originalGUILine="pres = 7.6E1"
  oldGUILine="$originalGUILine"
  GUIfile="GUIVars.f90"

  for (( i = -3 ; i <= 1 ; i=i+1 ))
    do
        p="7.6E$i"
        newGUILine="pres = $p"
        sed -i "s/$oldGUILine/$newGUILine/g" "$GUIfile"
        oldGUILine="$newGUILine"

        make clean >& /dev/null
        make 1D >& /dev/null
        make 1D

        ./PressurePIC

        cp "Anode_ele_eng.csv" "../results/T_${t}_P_${p}_Energies.csv"
    done

  sed -i "s/$oldGUILine/$originalGUILine/g" "$GUIfile"

生成文件

  CC=ifort
  OPTIONS = -warn noalign -autodouble
  PRNG = luxury.f90
  MAIN = NDPIC1D.v0.f90 GUIVars.f90 GlobalVars.f90 StatisticalDistribution.f90 Emission.f90
  TODO = ParticleInCell.f90 MonteCarloCollision.f90 Transformations.f90
  EXE = PressurePIC

  all:
    @$(CC) $(PRNG) $(MAIN) $(TODO) -o $(EXE) $(OPTIONS)

  1D:
    @$(CC) $(PRNG) $(MAIN) $(TODO) -o $(EXE) $(OPTIONS)

  2D:
    @$(CC) $(PRNG) $(MAIN) $(TODO) -o $(EXE) $(OPTIONS)

  clean:
    @rm *.mod $(EXE)

  run:
    @./$(EXE)

  info:
    @echo $(EXE)
4

1 回答 1

1

我不确定qsub你用的是什么口味的,所以这可能无济于事......

尝试包括

#$ -V

在脚本的开头。在某些处理它的系统上,qsub它确保环境变量从您的环境导出到脚本最终运行的环境。这些环境通常是不同的。

于 2013-10-07T12:35:29.917 回答