为什么我找不到所需位置的输出文件?

时间:2016-04-26 14:34:15

标签: bash shell sh fastq zcat

我正在尝试编写一个处理脚本,但我一开始就陷入困境。它似乎没有错,但我不能简单地理解错误在哪里,因为它正在完成执行但不提供任何输出。有没有调试帮助?

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

我没有看到代码中的任何错误,它也没有错误运行但仍然没有得到任何输出。有谁能指出我的问题?

3 个答案:

答案 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"

`

这可能是你想要的,