Pregunta

I want to compile a program in a bash for loop. When I run the program from the command line it will compile but when I use qsub it doesn't compile.

Is there something I am missing?

Regards,

John

Bash File

  #!/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"

makefile

  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)
¿Fue útil?

Solución

I'm not sure what flavour of qsub you are using so this may not help ...

Try including

#$ -V

at the start of your script. On some systems which process qsub it ensures that environment variables are exported from your environment to the environment in which the script eventually runs. These environments are not, generally, the same.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top