если тогда оператор else не будет правильно зациклен - PullRequest
0 голосов
/ 28 сентября 2018

Я понял, как заставить работать оператор if then else, но теперь он, кажется, сломался.= (Я не могу понять, что идет не так!

В ./ имеется до 10 каталогов с именем barcode01 - 09 и один с именем unclassified. Этот скрипт должен входить в каждый из них, подготовить каталог для~/Taxonomy.R (Для этого требуется сжать все файлы fastq и поместить их в подкаталог с названием «data». Затем он запускает сценарий ~/Taxonomy.R для создания файла метаданных для каждого.

Отредактируйте файл tmp.txt, используя ls > tmp.txt, затем echo "0" >> tmp.txt, чтобы создать жертвенный список каталогов, которые скрипт должен прожевать, а затем остановить, когда он достигнет 0.

#!/bin/bash

source deactivate
source activate R-Env

value=(sed -n 1p tmp.txt)

if [ "$value" = "0" ]
then 
    rm tmp.txt
else
    cd "$(sed -n 1p tmp.txt)"
    gzip *fastq
    #
    for i in *.gz
    do
        mv "$i" "${i%.*}_R1.fastq.gz"; 
    done

    #this adds the direction identifier "R1" to all the fastq.gzips
    mkdir Data
    mv *gz Data
    ~/Taxonomy3.R
    cd Data
    mv * ..
    cd ..
    rm -r Data
    cd ..
    sed '1d' tmp.txt > tmp2.txt
    mv tmp2.txt tmp.txt
fi

В настоящее время, он только создает файл метаданных в первом каталоге штрих-кодов.

1 Ответ

0 голосов
/ 28 сентября 2018

Если вы сделаете отступ в своем коде, все станет намного понятнее.С другой стороны, изменение файла tmp.txt таким образом является медленным и опасным.Лучше просматривать его содержимое только читая его.

#!/bin/bash
source deactivate
source activate R-Env

for value in $(<tmp.txt)
do
    cd "$value"
    gzip *fastq

    for i in *.gz
    do
        # This adds the direction identifier "R1" to all the fastq.gzips
        mv "$i" "${i%.*}_R1.fastq.gz"
    done

    mkdir Data
    mv *gz Data
    ~/Taxonomy3.R
    mv Data/* .
    rmdir Data

    cd -
done
rm tmp.txt

С этим переработанным скриптом вам нужно всего лишь создать файл tmp.txt БЕЗ добавления какого-либо маркера в конце (на самом деле он вам никогда не понадобился, вы могли бы иметьпроверено на наличие пустого файла).

Для каждой папки в скрипте выполняются необходимые операции.Я упростил изменение некоторых папок, сведя их к размеру, необходимому для правильной работы R-скрипта.Чтобы вернуться назад, я использовал cd -, который идет в предыдущую папку, так что вы можете иметь более одного уровня в вашем файле tmp.txt.

Надеюсь, все остальное понятно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...