Обход списка и создание каталогов (ИЛИ почему этот цикл прерывается) - PullRequest
0 голосов
/ 22 февраля 2012

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

К сожалению, этот скрипт заполняет только верхний уровень first подкаталогами.Почему он не продолжается после первого элемента в $ dirlist?

#! /bin/bash                                                                                                                                             

dirlist=( <a ton of top-level directories> );
combolist=(mpi12_omp1_opt mpi12_omp1 mpi6_omp2 mpi4_omp3 mpi2_omp6 mpi1_omp12);
index1=0;
index2=0;

#This is where I'm trying to create the directories                                                                         
while [ $index1 -lt ${#dirlist[@]} ]
do
    cd ~/bench;
    basedir="bench_"${dirlist[$index1]};
    while [ $index2 -lt ${#combolist[@]} ]
    do
        if [ -d $basedir'/'${combolist[$index2]} ]; then
            DATE=`date +%m-%e-%y`;
            directory=$basedir'/'${combolist[$index2]}'/'$DATE;
            mkdir $directory;
    else #No directory for the combo                                                                                                               
            directory=$basedir'/'${combolist[$index2]};
            mkdir $directory;
    fi
        echo $directory;
    ((index2++));
    done
    ((index1++));
done

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Почему бы не выполнить итерацию по списку напрямую?

for dir1 in "${dirlist[@]}"
do
    echo $dir1
done
1 голос
/ 22 февраля 2012

Вы только инициализируете index2 в 0 в начале.Вам нужно инициализировать его в 0 в начале каждой итерации:

#This is where I'm trying to create the directories
while [ $index1 -lt ${#dirlist[@]} ]
do
    index2=0
    cd ~/bench;
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...