2013-06-20 78 views
0

我正在編寫一個腳本,並且在一個點上我希望它檢查一個文件是否已經存在。如果該文件不存在,那麼它不應該做任何事情。但是,如果文件存在,我想要出現'y'或'n'(是或否)菜單。它應該問「你想覆蓋這個文件嗎?」。在UNIX bash shell腳本中創建'yes'或'no'菜單

到目前爲止,我已經嘗試寫類似這樣的東西。考慮到在此之前稱爲:

therestore 

存在。如果他們鍵入「y」,我希望這個功能發生。無論如何,這是我的嘗試:

If [ -f directorypathANDfilename ] ; then 
read -p "A file with the same name exists, Overwrite it? Type y/n?" yesorno 
    case $yesorno in 
      y*) therestore ;; 
      n*) echo "File has not been restored" ;; 
    esac 
fi 

出於某種原因,雖然,菜單總是彈出,即使該文件不存在,如果我輸入yes它不能正常恢復了! (但我知道「存儲」功能正常工作,因爲我已經測試了很多次)。

對於長期問題的道歉。如果您需要更多的細節,請告訴我 - 預先感謝!

回答

2

您的腳本是否運行?對我來說看起來不像是有效的bash腳本。 If不是有效的關鍵字,但if是。此外,測試進入角度括號[],那些不是可選的。此外,你忘記了關閉fi
另一件事,我不清楚你正在測試什麼。是directorypathANDfilename一個變量?在這種情況下,你必須參考$

的片段可能會像這樣工作更好:

#!/bin/bash 

if [ -f "$directorypathANDfilename" ] ; then 
read -p "A file with the same name exists, Overwrite it? Type y/n?" yesorno 
    case "$yesorno" in 
      y*) therestore ;; 
      n*) echo "File has not been restored" ;; 
    esac 
fi 
+0

奧斯!我忘了添加'測試'聲明和關閉fi - 謝謝你這樣做!但在原始腳本中,我確實同時包含了這兩個元素,但仍然存在問題。 另外,爲什麼這不像一個bash腳本? 乾杯! – DeaIss

+1

@oOTesterOo那麼,只是因爲所有的語法錯誤。 – djf

+0

這工作完美。謝謝!!! – DeaIss