2015-04-08 3 views
0

Я новый кодер и проблема с написанием сценария bash, в котором все файлы журнала в моем каталоге (number001.log, number002.log, ect.) Обрабатываются через perl-скрипт (map_shifts2PDB.pl), и результаты каждого файла numberXXX.log объединяются в файл results.out. Для сценария perl требуются следующие аргументы ./map_shifts2PDB.pl <path of logfile> <path of test.pdb> (constant) и номер обрабатываемого файла журнала. Я не знаю, как синхронизировать это с файлом журнала, который читается в цикле. Это то, что я до сих пор:Bash Script: все файлы в каталоге

#!/bin/bash 

for f in ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/calculate/*.log; do 

./map_shifts2PDB.pl ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/calculate ~/TrpCage_1L2Y/1L2Y 
_min_explicit/model1_charged/test.pdb 1 >> results.out 

done 

ответ

0

Просто извлечь номер из имени файла, используя расширение параметра:

num=${f##*/number} # Delete everything up to /number. 
num=${num%.log}  # Delete the extension. 
./map_shifts2PDB.pl \ 
    ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/calculate \ 
    ~/TrpCage_1L2Y/1L2Y_min_explicit/model1_charged/test.pdb \ 
    $num >> results.out 

Что вы имеете в виду под «рекурсивный» в названии?

Смежные вопросы