2013-07-16 26 views
22

我就像一個創建一個bash腳本複雜的目錄結構和的印象了以下將工作:創建一個完整的目錄樹一次

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(#!)中使用的shell可以做到這一點嗎?它是'/ bin/bash'還是它指向Debian或Ubuntu中的'/ bin/dash'的'/ bin/sh'?如果沒有將其更改爲'/ bin/bash'並再試一次。 –

回答

14

變化家當來

#!/bin/bash 

,因爲它支持括號擴展到運行在bash腳本。

問題是您使用的shell不支持它。您的/bin/sh不指向/bin/bash,而是指向/bin/dash

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

+0

我意識到這一點後,也遇到了字符串操作的錯誤。儘管我有#!/ bin/bash作爲我的shebang,但我卻用sudo sh腳本愚蠢地執行我的腳本 – James