遍历列表并创建目录(或者为什么这个循环中断)

时间:2012-02-22 02:53:38

标签: linux bash shell

我正在尝试使用两个列表创建一系列目录(每个顶级目录一个,另一个包含每个顶级将获得的子目录集)。我正在使用嵌套循环一次填充一个顶级目录。

不幸的是,此脚本仅使用子目录填充第一个顶级。为什么不继续超过$ 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 个答案:

答案 0 :(得分:2)

为什么不直接遍历列表呢?

for dir1 in "${dirlist[@]}"
do
    echo $dir1
done

答案 1 :(得分:1)

您只能在开始时将index2初始化为0。您需要在每次迭代开始时将其初始化为0:

#This is where I'm trying to create the directories
while [ $index1 -lt ${#dirlist[@]} ]
do
    index2=0
    cd ~/bench;
    ...