2013-07-16 5 views
22

Я, как создать сложную структуру каталогов в Баш скрипт и был под впечатлением следующее будет работать:Создание полного дерева каталогов сразу

mkdir -p tmpdir/{trunk/sources/{includes,docs},branches,tags} 

Что бы создать:

  tmpdir 
    ________|______ 
    |  |  | 
branches tags trunk 
        | 
       sources 
       ____|_____ 
       |   | 
      includes  docs 

Однако, когда я бегу мой сценарий, я в конечном итоге с:

tmpdir 
    | 
trunk 

есть быстрый и простой способ сделать это, или я Я собираюсь прибегнуть к

mkdir -p tmpdir/trunk/sources/includes 
mkdir -p tmpdir/trunk/sources/docs 
mkdir -p tmpdir/branches 
mkdir -p tmpdir/tags 
+0

Я просто проверял и работал со мной так, как вы хотите. Я с 'mkdir (GNU coreutils) 8.13' – fedorqui

+0

У меня такое чувство, что это та же проблема: http://stackoverflow.com/questions/17673337/bash-expand-parameters-from-variable-how – Barmar

+2

Вы совершенно уверен, что оболочка, которую вы используете в shebang (#!), может это сделать? Это '/ bin/bash' или это'/bin/sh' указывает на '/ bin/dash' в Debian или Ubuntu? Если не изменить его на '/ bin/bash' и повторите попытку. –

ответ

14

Изменение притон для

#!/bin/bash 

запустить скрипт с Баш, как он поддерживает расширение скобка.

Проблема в том, что вы используете оболочку, которая ее не поддерживает. Ваш /bin/sh не указывает на /bin/bash, а на что-то вроде /bin/dash.

https://wiki.ubuntu.com/DashAsBinSh#A.7B

+0

Я понимаю это после того, как вы столкнулись с ошибкой с строковыми манипуляциями. Хотя у меня был #!/Bin/bash как мой shebang, я глупо исполнял свой сценарий с помощью скрипта sudo sh – James

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