2016-08-14 140 views
-1

我在根目錄中,我正在創建一個腳本,它將使我從根>主頁>日誌和內部日誌中刪除3個日誌文件。 腳本會檢查它們是否存在,如果是,它將刪除它。 如果你可以幫忙,我正面臨一些語法問題。Unix腳本更改目錄

感謝

我的代碼:

#!/bin/sh 
cd Home/Log 
if [ -e error1.log ] 
then 
rm error1 
fi 
if [ -e error2.log ] 
then 
rm error1 
fi 
if [ -e error3.log ] 
then 
rm error1 
fi 

當我執行使用./delete在這裏的根文件是什麼,是我得到的錯誤:

$ ./delete 
: No such file or directoryme/Log 
./delete: line 14: syntax error near unexpected token `fi' 
+1

你確定存在這樣一個路徑'Home/Log'是你運行腳本時的當前目錄嗎? –

+0

是我自己創建的 – Johnny

+1

如果在shell中手動逐個運行命令,會發生什麼情況? –

回答

1

我在根目錄下

在編寫腳本時,幾乎總是最好不要假設那樣的事情。如果你知道這些文件在哪裏,並且它們相對於當前的工作目錄而言並不重要,那麼只需命名它們即可。

這裏有三種方法可以完成你想要的安全。

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error1.log ${dir}/error2.log ${dir}/error2.log 

#!/bin/sh 
dir=/Home/Log 
rm -f ${dir}/error{1,2,3}.log 

#!/bin/sh 
set -e 
cd /Home/Log && rm -f error1.log error2.log error2.log 

對於任何非平凡,set -e是你的朋友。在您的示例中,腳本中稍後沒有任何反應。你不想要的是繼續前進想着你已經改變了目錄,但沒有,並且在你不想要的地方塗鴉。許多人失去了那麼多。

+0

謝謝你解決這個問題。 – Johnny