2012-02-05 191 views
16

我有一個腳本,是發送電子郵件的其他人鏈中的一個腳本。BASH,檢查文件是否存在,然後繼續退出

在腳本開始時,我想檢查一個文件是否存在,並且只在存在時才繼續,否則就退出。

這裏是我的腳本的開頭:

{ 
if [ ! -f /scripts/alert ]; 
then 
    echo "File not found!" && exit 0 
else 
     continue 
fi 
} 

不過,我不斷收到一條消息說:

line 10: continue: only meaningful in a `for', `while', or `until' loop 

任何指針?

+2

爲什麼你在這裏需要'繼續'? – 2012-02-05 01:25:44

回答

24

它改成這樣:

{ 
if [ ! -f /scripts/alert ]; then 
    echo "File not found!" 
    exit 0 
fi 
} 

有條件的不是一個循環,而且也沒有地方,你需要跳轉到。無論如何,有條件地繼續執行。

(我也刪除不必要的&&,不是,它應該發生,但以防萬一echo失敗,沒有理由不退出。)

+0

感謝您在解釋後更有意義:) – user1190083 2012-02-08 12:52:15

+1

+1不會繼續,並且在失敗失敗時繼續失敗。 – 2014-02-27 22:22:03

1

是。丟掉else continue。這完全不需要。

1

您的問題是與continue行通常用於跳轉到forwhile循環的下一個迭代。

因此,只要刪除腳本的else部分就可以使其工作。