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

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

4

3 回答 3

2

首先尝试像这样更改两行:

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

mkdir -p$outloc目录还不存在时很好。

于 2016-04-26T14:42:07.347 回答
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

产生任何输出?

于 2016-04-26T14:46:11.370 回答
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"

`

这可能是你想要的,

于 2016-04-26T15:05:13.263 回答