2014-07-25 78 views
0

如何通過使用一個函數來創建一個新的目錄,並將目錄名稱作爲參數傳遞?在shell腳本中添加一個新的目錄Linux

例子:

CreateNewDirectory \home\Folder1; # Creates a folder named "Folder1" at home # 
+0

的Unix不使用反斜槓作爲路徑分隔符;它使用斜線(/)。 – chepner

回答

6
foo() { 
    dirPath=${1:?Need path to directory as first argument} 
    mkdir -- "$dirPath" 
} 

然後調用:

foo /path/to/my/new/directory 
+0

@Alfie添加'-p'可能是一個想法,因此如果中間目錄不存在,OP可以添加您建議的路徑而不會出現錯誤。 –

+1

添加未要求的功能(這可能會導致問題,因爲在這種情況下)可能不是一個好主意。考慮用戶傳遞像'/ usr/lacol/lib/newDir'這樣的參數(假設存在特權),然後奇怪爲什麼在調用之後不存在預期的'/ usr/local/lib/newDir'。幾個月後,他們可能會發現裏面有垃圾的錯字目錄'/ usr/lacol /'。 – Alfe

+2

不錯的主意使用':?'。 – konsolebox

2

我會去與此。

CreateNewDirectory() { 
    mkdir -p "$1" 
} 

CreateNewDirectory $HOME/and/any/path/in/between 

它允許你創建完整路徑的目錄,包括之間的一切。所以,即使你沒有一個叫and或一個叫any或一個叫path等,它西港島線在沒有爲你的錯誤一氣呵成創建整個樹,目錄,而不需要做

CreateNewDirectory $HOME/and 
CreateNewDirectory $HOME/and/any 
CreateNewDirectory $HOME/and/any/path 
CreateNewDirectory $HOME/and/any/path/in 
CreateNewDirectory $HOME/and/any/path/in/between