Search code examples
bashsubmitqsub

Trying to create submit script to SGE


I'm trying to edit my working bash script to an SGE script in order to submit it as a job to the cluster.

Currently I have:

#!/bin/bash

# Perform fastqc on files in a specified directory.

for ((j=1; j <=17; j++))
do
   directory=/data4/una/batch"$j"/
   files=$""$directory"/*.fastq.gz"
   batch=$"batch_"$j""
   outfile=$""$batch"_submit_script.sh"

     echo "#!/bin/bash">>$outfile;
     echo "# Your job name">>$outfile;
     echo "# -N $batch">>$outfile;
     echo "# The job should be placed into the queue 'all.q'">>$outfile;
     echo "#$ -q all.q">>$outfile;
     echo "# Running in the current working directory">>$outfile;
     echo "#$ -cwd">>$outfile;
     echo "">>$outfile;
     echo "# Export some necessary environment variables">>$outfile;
     echo "#$ -S /bin/bash">>$outfile;
     echo "#$ -v PATH">>$outfile;
     echo "#$ -v LD_LIBRARY_PATH">>$outfile;
     echo "#$ -v PYTHONPATH">>$outfile;
     echo "# Finally, put your command here">>$outfile;
     echo "">>$outfile;
     echo "#$ for i in $files;">>$outfile;
     echo "#$ do;">>$outfile;
     echo "#$ fastqc -f fastq -o /data4/una/test/fastq/$i;">>$outfile;
     echo "#$done">>$outfile;
     echo "">>$outfile;

     qsub $outfile;
done

But I'm getting an error:

Unable to read script file because of error: ERROR! invalid option argument "-f"

But

fastqc -f fastq -o /data4/una/test/fastq/$i

is a totally valid line in my bash script.

Thoughts?

Thanks!


Solution

  • It actually was poor formatting for my loop that was causing this error. I didn't need to start those lines with #$ at all, so those lines become:

    echo "for i in $files;">>$outfile; 
    echo "do">>$outfile; 
    echo " fastqc -f fastq -o /data4/una/test/fastqc $i">>$outfile; 
    echo "done">>$outfile; 
    echo "">>$outfile; 
    
    qsub $outfile;