我正在尝试编写一个处理脚本,但我一开始就陷入困境。它似乎没有错,但我不能简单地理解错误在哪里,因为它正在完成执行但不提供任何输出。有没有调试帮助?
#!/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
我没有看到代码中的任何错误,它也没有错误运行但仍然没有得到任何输出。有谁能指出我的问题?
答案 0 :(得分:2)
首先尝试更改两行:
mkdir -p "$outloc/${bn}_processed"
fout="$outloc/${bn}_processed"
当mkdir -p
目录尚不存在时, $outloc
很好。
答案 1 :(得分:1)
你可以测试你的参数(以下可能仅在bash中,但在bash被调用为/ bin / sh时可以正常工作)
var=$1
if [ ${#var} -eq 0 ]; then
echo "var is not defined" >&2
exit 1
fi
将测试变量有一定长度,你可能也想测试其他方面,例如
ls $floc/*R1*.fastq.gz
产生任何输出?
答案 2 :(得分: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"
`
这可能是你想要的,