2013-10-07 35 views
0

我想在bash for循环中编译程序。当我从命令行运行程序时,它会编译,但是当我使用qsub时,它不会编译。使用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" 

的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) 

回答

1

我不知道你用的是什么味道的qsub所以这可能不是帮助。 ..

尝试包括

#$ -V 

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