0

単純な bash スクリプトを作成してツリー構造を作成しようとしているところですが、ロジックが間違っている場所を見つけることができません。現時点では、スクリプトは 2 番目の深さまで到達しますが、その中の最初のフォルダーのみを埋めます。誰でも私のエラーを見つけることができますか?

ありがとう

#!/bin/bash

create(){

 directory=$1

 for((j=0; j < depth; j++)); do


  for x in ${directory[@]}; do

    temp=( )

    for((i=0; i < breadth; i++)); do

        mkdir $x/$i 

        temp=($temp $x/$i)

    done    

  done  

    directory=($temp)

 done



}

breadth=3
depth=2

direc=(tree)

create $direc
4

2 に答える 2

2

問題は、mkdirが--parents(-p)スイッチなしでは複数レベルのディレクトリを作成できないことです。だからライン上:

mkdir $ x / $ i

$ xが存在しないため、$ x /$iを作成できません。この変更を試してください:

create(){
    directory=$1
    for((j=0; j < depth; j++)); do
        for x in ${directory[@]}; do
            temp=( )
            for((i=0; i < breadth; i++)); do
                mkdir -p $x/$i
                temp=($temp $x/$i)
            done
        done
        directory=($temp)
    done
}


breadth=3
depth=2

direc=(tree)

create $direc

lotusphpのよりエレガントなソリューションに基づいて編集

于 2012-09-19T01:24:45.677 に答える