Почему я не нахожу никаких выходных файлов в нужном месте?

Я пытаюсь написать сценарий обработки, и я застрял в начале. Кажется, это не так, но я не могу просто понять, где находится ошибка, поскольку она завершает выполнение, но не дает никакого вывода. Любая помощь отладки?

#!/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 ответа

Сначала попробуйте изменить две строки следующим образом:

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

mkdir -p хорошо когда $outloc Каталог еще не существует.

Вы можете проверить свои аргументы (следующее может быть только в 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

производить какой-либо вывод?

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

`

это может быть, что вы хотите,

Другие вопросы по тегам