Несколько раз запустить скрипт и сохранить результаты в нескольких папках - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь запустить script в нескольких папках, которые вызывают: программное обеспечение, два входных файла, которые автоматически создают папку в качестве вывода (в папке ввода), например:

./soft -in1 input1 -in2 input2

Кроме того, у меня есть несколько папок, например:

├── Folder1
│   ├── input1.in1
│   ├── input1.in2
│   ├── soft.py
├── Folder2
│   ├── input2.in1
│   ├── input2.in2
│   ├── soft.py                                                                             
├── script.sh

Итак, я хочу сделать два процесса:

Сначала , запустите скрипт рекурсивно (во всех папках), и , вторым , запустите «X» повторения сценария в каждой папке. Я получил этот скрипт для запуска рекурсивно.

Но у меня проблемы с запуском повторений. Я пытаюсь использовать команду seq, но программа ./soft перезаписывает вывод в каждом повторении. Поэтому мне нужно сохранить выходные данные в папках с номером каждого повторения (например, \ out_Folder1_rep1; \ out_Folder1_rep2; \ out_Folder1_rep3).

Мне нужно создавать выходные папки для каждого повторения раньше? Кто-нибудь может мне помочь?

for dir in */; do
    for r in in1; do
        glob=*.${r}
        "./soft" -in1 "$dir"/$glob -in2 "$dir"/$(basename -s .tpl $glob).in2 ;
    done
done

1 Ответ

0 голосов
/ 30 августа 2018

Сначала запустите сценарий рекурсивно (во всех папках), а затем запустите «X» повторений сценария в каждой папке. Я получил этот скрипт для запуска рекурсивно.

Вместо того, чтобы делать рекурсию, сначала прочитайте список всех папок в корневой папке, затем «измените каталог» на каждую запись в списке папок и затем выполните свой сценарий.

Пожалуйста, найдите образец кода ниже:

#!/bin/sh

if [ ! -z "${1}" ];
then
    DIR_LIST=$(ls -d "${1}/*")
    for dir in "${DIR_LIST}";
    do
      cd ${dir}
      # run your script here
    done
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...