2017-10-26 4 views
0

作業用のbashスクリプトをSGEスクリプトに編集して、クラスターにジョブとして送信しようとしています。SGEへのサブミットスクリプトを作成しようとしています

現在、私が持っている:

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

しかし、私はエラーを取得しています:

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

しかし

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

は私のbashスクリプトで完全に有効なラインです。

思考?

ありがとうございます!

+0

わからないが、過度のセミコロンはであり、 'エコー「#$やる;」>> $ outfile; '' echo "#$ do" >> $ outfile; 'でなければなりません。また、あなたは 'echo $#" $ $ "" $ outfile; 'に$ echo"#$ outfile; 'で空白がありません。 –

+0

こんにちは、入力のおかげで!実際にこのエラーの原因となっていたループのフォーマットが正しくありませんでした。 '#$'でこれらの行を始める必要はありませんでしたので、行は次のようになります。 $ファイル内のiの 'echo"; >> $ outfile; ' ' echo "do" >> $ outfile; ' 'echo" fastqc -f fastq -o/data4/una/test/fastqc $ i ">> $ outfile;' '' echo "done" >> $ outfile; ' ' echo >> >> >> $ outfile; ' ' qsub $ outfile; ' –

答えて

0

実際にこのエラーの原因となっていたループのフォーマットが正しくありませんでした。私はすべての#$とそれらのラインを起動する必要はありませんでしたので、これらの行は次のようになります。エラーに関連している場合

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; 
関連する問題