Скрипт оболочки случайно не выполняет команды файловых операций

У меня проблемы с запуском этого скрипта. Время от времени, он не сможет выполнить mv команда или rm команда, указанная ниже. Тогда следующая итерация ощутит все последствия этого сбоя. Почему это происходит, и как мне это контролировать? Для справки, синтаксис phyml -i $f [parameters] выводит файлы $f_phyml_tree.txt а также $f_phyml_stats.txt в тот же каталог, что и $f, Я хочу получить оба этих файла из этого каталога при сохранении дерева в другом месте.

ber="_phyml_tree.txt"
for f in ~/randseqs/aa/*.txt;
do
    echo $f
    fpath=`echo $f | cut -d'/' -f 6`
    if [ ! -f /home/mcb3421_10/phymlout/aa/$fpath$ber ] || [ ! -f /home/mcb3421_10/phymltimer/aa/$fpath ]; then
        phyml -i $f -d aa -b 0 -m Blosum62 > ~/blown.txt
        grep "Time used" < ~/blown.txt > ~/phymltimer/aa/$fpath
        mv /home/mcb3421_10/randseqs/aa/*$ber phymlout/aa
        if [ ! -f /home/mcb3421_10/phymlout/aa/$fpath$ber ]; then
            echo $f failed to write, check the logfile /home/mcb3421_10/phymllogs/aa/$fpath
        fi
        rm ~/randseqs/aa/*_stat*
        mv ~/blown.txt ~/phymllogs/aa/$fpath
    fi
done
for f in ~/randseqs/nuc/*.txt;
do
    echo $f
    fpath=`echo $f | cut -d'/' -f 6`
    if [ ! -f /home/mcb3421_10/phymlout/nuc/$fpath$ber ] || [ ! -f /home/mcb3421_10/phymltimer/nuc/$fpath ]; then
        phyml -i $f -d nt -b 0 -m HKY85 > ~/blown.txt
        grep "Time used" < ~/blown.txt > ~/phymltimer/nuc/$fpath
        mv /home/mcb3421_10/randseqs/nuc/*$ber phymlout/nuc
        if [ ! -f /home/mcb3421_10/phymlout/nuc/$fpath$ber ]; then
            echo $f failed to write, check the logfile /home/mcb3421_10/phymllogs/nuc/$fpath
        fi
        rm ~/randseqs/nuc/*_stat*
        mv ~/blown.txt ~/phymllogs/nuc/$fpath
    fi
done

0 ответов

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