2013-07-16 20 views
22

Sono come un creare una struttura di directory complessa in uno script bash ed era sotto l'impressione del seguente avrebbe funzionato:Creazione di un albero di directory completo in una sola volta

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

che creerebbe:

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

Tuttavia quando ho eseguito il mio script io alla fine con:

tmpdir 
    | 
trunk 

esiste un modo semplice e veloce per fare questo o aM Ho intenzione di ricorrere a

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

ho appena provato e ha lavorato per me il modo in cui si desidera. Sono con 'mkdir (GNU coreutils) 8.13' – fedorqui

+0

Ho la sensazione che questo sia lo stesso problema di questo: http://stackoverflow.com/questions/17673337/bash-expand-parameters-from-variable-how – Barmar

+2

Sei perfettamente sicuro che la shell che usi in shebang (#!) possa farlo? È '/ bin/bash' o è'/bin/sh' che punta a '/ bin/dash' in Debian o Ubuntu? Se non lo si cambia in '/ bin/bash' e riprovare. –

risposta

14

Cambiare la baracca per

#!/bin/bash 

per eseguire lo script con bash in quanto supporta espansione delle parentesi graffe.

Il problema è che si sta utilizzando shell che non la supporta. Il tuo /bin/sh non punta a /bin/bash ma a qualcosa come /bin/dash.

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

+0

Realizzo questo dopo aver eseguito un errore anche con la manipolazione delle stringhe. Anche se avevo #!/Bin/bash come mia shebang stavo stupidamente eseguendo il mio script con sudo sh script – James

Problemi correlati