在具有嵌套循环和数组的文件夹内创建文件

时间:2018-10-23 03:04:36

标签: arrays bash loops nested

我正在尝试创建2个文件夹和其中的一些文件。但是它只能创建第一个文件夹和第一个文件。代码说,因为它存在,所以无法创建第一个文件夹。甚至不要尝试创建其余的文件和文件夹。

这是我尝试过的

ExecutorService

总而言之,应该有2个文件夹,分别为rel20和rel21,以及两个文本文件。但是我只得到文件夹rel20和其中的一个文本文件。

如果您能指出为什么这行不通,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

您对数组的索引不正确。坦白说,数组没有增加任何价值,因此不值得混淆。只要做:

#!/bin/bash                                                                                                                                                                                                 

for i in rel20 rel21; do
    (   # This open paren is important
        mkdir -p $i
        cd $i

        for j in pt_el pt_mu; do
            textFile=text_$i_$j.txt
            targetDir=Desktop/samples                                                                                                                     

            cat >${textFile} <<-EOF
            "some tex"    
            EOF                                                                                                                                                                                                         

        done                                                                                                                                                                                           
    ) # end subshell to recover previous working directory
done

答案 1 :(得分:2)

我认为从您发布的内容来看,他就是您想要的。

#!/bin/bash

declare -a arrRel=(rel20 rel21)
declare -a arrVar=(pt_el pt_mu)
declare -a arrVarTitle=("electron p_T" "muon p_T")

for i in "${arrRel[@]}"
do
    mkdir "$i"
    cd "$i"

    for j in "${arrVar[@]}"
    do
        textFile=text_$i_$j.txt
        targetDir=Desktop/samples                                            

        cat >${textFile} <<EOF
        "some tex"
EOF

    done #arrVar

    cd ../ #cd arrRel

done

不确定您对arrVarTitle的意图是什么。