shell脚本中的未知错误

时间:2014-04-20 05:23:19

标签: shell syntax

我拼凑了一个shell脚本来提交群集上的多个作业,它似乎没有给我一个错误消息,但输出文件丢失,错误日志文件也是空的。脚本应该做的是1.)制作一堆新目录,2。)将四个文件复制到每个(mainparams,extraparams,infile和structurejobsubmissionfile)。然后将每个提交给集群以使其运行结构,同时在每个第十个目录中更改mainparams文件中的一个参数(即' s / changethis /' $ k' / g&# 39;线)。

在前端测试运行它没有错误,结构程序在群集上是最新的,并且群集管理员不会看到任何错误。谢谢!

#!/bin/bash
reps=10
numK=10 

for k in $(seq $numK);
    do
    for i in $(seq $reps);
        do
            #make folder name (ex. k4rep7)
            tmpstr="k${k}rep${i}"
            #echo "Making folder and filename $tmpstr"
            #make the new folder
                    mkdir $tmpstr
            #go to that folder
            cd ./$tmpstr
            #copy in the input files
            cp ../str_in/* ./
            #modify the recently copied input file here so source file remains the same
            cp ./mainparams ./temp.txt
            #change maxpops to current value of k and the directory for the files to the current directory
            sed -e 's/changethis/'$k'/g' -e "s:pathforrunningstructurehere:$PWD:g" ./temp.txt > ./mainparams    
            #get rid of temporary file
            rm ./temp.txt
            #inside $i so run STRUCTURE here
            qsub -q fnrgenetics -l nodes=1:ppn=1,walltime=20:00:00 structurejobsubmissionfile
            #go back to parent directory
            cd ../
        done
    done

1 个答案:

答案 0 :(得分:0)

我看不到任何明显错误,但我认为你找到答案的地方在于更好的记录和更好的错误检查。你不应该检查的一些事情:

  1. $tmpstr是否正确创建? (将在磁盘已满时失败或未正确设置权限)
  2. 是否存在str_in/,是一个目录吗?
  3. 是否包含文件?
  4. 是否包含mainparams
  5. qsub
  6. 中是$PATH
  7. 对qsub的调用是否会返回错误?
  8. 您可以滚动自己的错误记录功能,或使用log4bash

    之类的包