2014-04-20 60 views
1

我正在做一個簡單的shell腳本,我需要測試一個目錄,如果它存在,刪除它並創建一個新的,如果它不存在,創建它。我需要測試一個目錄在unix

這是我到目前爲止有:

if (! -d /numbers); then 
     echo "does not exist, creating directory" 
     sleep 3s 
     mkdir numbers 
     echo "Directory created." 
else 
     echo "Removing existing directory and creating a new one" 
     sleep 2s 
     rmdir numbers 
     echo "directory removed" 
     sleep 1s 
     mkdir numbers 
     echo "Directory created" 
fi 

,但是這給了我一個錯誤信息:

myscript.sh: line 17: -d: command not found 

,如果該目錄是存在的:

mkdir: cannot create directory `numbers': File exists 
+0

谷歌對於bash的初學者...你的機器上做一個'人test' ...的 – iamauser

+0

可能重複[如何檢查是否在外殼存在的目錄腳本](http://stackoverflow.com/questions/59838/how-to-check-if-a-directory-exists-in-a-shell-script) – BroSlow

回答

1

您需要在if語句中使用方括號來進行測試。您也正在使用rmdir,這隻有在目錄爲空時才能使用。如果您想刪除它及其內容,請使用rm -r numbers

也許是這樣的:

if [ ! -d numbers ]; then 
     echo "does not exist, creating directory" 
     sleep 3s 
     mkdir numbers 
     echo "Directory created." 
else 
     echo "Removing existing directory and creating a new one" 
     sleep 2s 
     rm -r numbers 
     echo "directory removed" 
     sleep 1s 
     mkdir numbers 
     echo "Directory created" 
fi 
+0

這不起作用,它永遠不會對其他聲明,如果direcrtory存在,它仍然運行if語句由於某種原因 – user3524591

+0

它檢查的目錄是否存在是'/ numbers'。文件系統根目錄中的數字目錄還是與此腳本運行的同一目錄中? – Jake

+0

它正在運行的同一目錄下,我將其更改爲「$ numbers」而不是/ numbers – user3524591