2016-04-26 10 views
0

処理スクリプトを作成しようとしていますが、最初は固執しています。それは間違っているようには見えませんが、実行を完了していて出力を出さないためにエラーがどこにあるのかを単に理解することはできません。デバッグに役立つ?目的の場所に出力ファイルが見つからないのはなぜですか?

#!/bin/sh  
# 
# Call with following arguments 
# sh test.sh <output_basename> <fastq folder> <output_folder_loc> 
# 
# 
bn=$1 
floc=$2 
outloc=$3 
#Create an output directory 
#opdir=$bn"_processed" 
mkdir $outloc/$bn"_processed" 
echo "output directory for fastq $outloc/$bn"_processed" ..." 

fout=$outloc/$bn"_processed" 
echo "$fout ..." 

echo "performing assembly to create one fastq file for each read mates ..." 
zcat $floc/*R1*.fastq.gz > $fout/$bn_R1.fastq 
zcat $floc/*R2*.fastq.gz > $fout/$bn_R2.fastq 
echo "done" 

実行]コマンド:

sh test.sh S_13_O1_122 /home/vdas/data/floc/Sample_S_13_O1_122_S12919 /home/vdas/data/OC/RNA-Seq/STAR_run/mut_out 

私はコード内の任意の間違って表示されていないと、それはまた、エラーなしで走っているが、まだ任意の出力を取得しておりません。誰も私に問題を指摘できますか? $outlocディレクトリがまだ存在していないときに良いです

mkdir -p "$outloc/${bn}_processed" 
fout="$outloc/${bn}_processed" 

mkdir -p

+5

は'スクリプトの先頭に-x'設定と実行の流れを見て、再びそれを実行を追加し、あなたが望むWathのすることができます。 – Inian

答えて

2

まず、このような2行を変更してみてください。変数は、いくつかの長さを持っていることをテストしますあなたの引数をテストすることができ

+1

またはより正確には、mkdir -pは、指定されたパスの欠落部分を作成します。 – Cwissy

+0

はい、私の悪いことです。ベースネームの解析が行われています。それが働いていなかった理由です。今は大丈夫です。 –

1

(以下は唯一のbashであってもよいが、bashのは、ビン/ SH /として呼び出されたときに動作しない)

var=$1 
if [ ${#var} -eq 0 ]; then 
    echo "var is not defined" >&2 
    exit 1 
fi 

、あなたは可能性がありますたとえば、他の側面もテストしたい場合はどうすればいいですか?

ls $floc/*R1*.fastq.gz 

出力は何ですか?

+0

私はその場所にたくさんのファイルを持っていますので、R1ファイルを$ flocで一緒に取ってパターンを使って1つのファイルを作成し、R2のために同様にしてから、それらをいくつかの他のコマンドダウンストリームに渡します。 –

+0

@vchris_ngs:それはあなたのQの本体に含めるべき重要な情報です。幸いです。 – shellter

0
#!/bin/sh  
# 
# Call with following arguments 
# sh test.sh <output_basename> <fastq folder> <output_folder_loc> 
# 
# 
bn=$1 
floc=$2 
outloc=$3 
#Create an output directory 
#opdir=$bn"_processed" 
mkdir $outloc/$bn"_processed" 
echo "output directory for fastq $outloc/$bn"_processed" ..." 

fout=$outloc/$bn"_processed" 
echo "$fout ..." 

echo "performing assembly to create one fastq file for each read mates ..." 
echo $floc/*R1*.fastq.gz 
echo $fout/$bn_R1.fastq 
zcat -v $floc/*R1*.fastq.gz > $fout/${bn}_R1.fastq 
zcat -v $floc/*R2*.fastq.gz > $fout/${bn}_R2.fastq 
echo "done" 

`

これは

関連する問題