2016-09-27 2 views
-1

Я написал программу, которая создает кучу каталогов на основе глубины и ширины. Существует 1 параметр, который является каталогом, в который я хочу сделать все каталоги. Проблема заключается в том, что он создает только каталоги в каталоге, где существует этот скрипт. В любом случае, я могу выбрать, где скрипт создает каталоги?Как изменить путь к каталогу в сценарии bash

#!/bin/sh 
depth=2 
breadth=5 

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

Простое исправление было бы просто поставить 'CD "$ 1" || exit' в качестве первой строки, так что остальная часть скрипта запускается в этом каталоге –

+3

Там много чего не здесь, кстати. Рассмотрите возможность запуска этого кода через http://shellcheck.net/ –

+0

Также здесь # #/bin/sh' shebang неверен, поскольку POSIX sh не поддерживает массивы. Вероятно, это должно быть '#!/Bin/bash', или (для вашего отсутствия правильности цитаты)' #!/Bin/zsh'. –

ответ

1

Определите эту переменную:

mydir="/directory/to/make/dirs" 

Изменение mkdir -p $i/$j к этому:

mkdir -p "$mydir/$i/$j" 
+0

Спасибо !!!!!! сэр –

Смежные вопросы