2013-07-16 15 views
22

bir bash komut karmaşık bir dizin yapısı oluşturmak seferde tam dizin ağacı oluşturma ve aşağıdaki çalışacak izlenimi altında oldu: Ben gibiyim

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

yaratacak hangisi:

  tmpdir 
    ________|______ 
    |  |  | 
branches tags trunk 
        | 
       sources 
       ____|_____ 
       |   | 
      includes  docs 
bunu yapmak için hızlı ve kolay bir yolu var mı

tmpdir 
    | 
trunk 

olduğumu veya: Ben komut dosyası çalıştırdığınızda

Ancak ile bitirmek Ben ayracı genişlemesini destekler olarak bash komut dosyasını çalıştırmak için

#!/bin/bash 

için

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

Ben sadece test edilmiş ve bana arzu yolunu çalıştı. Ben mkdir (GNU coreutils) 8.13' – fedorqui

+0

ile bu durumun aynı sorun olduğunu hissediyorum: http://stackoverflow.com/questions/17673337/bash-expand-parameters-from-variable-how – Barmar

+2

shebang'da (#!) kullandığınız kabuğun bunu yapabileceğinden kesinlikle emin misiniz? '/ Bin/bash' mı yoksa Debian veya Ubuntu’daki'/bin/dash'ı işaret eden '/ bin/sh' mi? Eğer bunu/bin/bash 'olarak değiştirmezseniz tekrar deneyin. –

cevap

14

Değişim shebang başvurmak zorunda olacak.

Sorun, desteklemeyen bir kabuk kullandığınızdır. /bin/sh, /bin/bash'u değil, /bin/dash gibi bir şeye işaret etmez.

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

+0

Bunu, string manipülasyonunda da bir hataya girdikten sonra anlıyorum. Her ne kadar benim #b/bin/bash benim shebang gibi olsa da, sudo sh script'le benim betiğimi aptalca yürütüyordum – James