2012-02-05 14 views
16

Başkalarının zincirinde bir e-posta gönderen bir komut dosyası olan bir komut dosyası var.BASH, dosyanın var olup olmadığını kontrol edin ve başka çıkışa devam edin

Komut dosyasının başlangıcında, bir dosyanın var olup olmadığını kontrol etmek ve yalnızca var ise devam etmek istiyorum, aksi takdirde yalnızca çıkın. İşte

Senaryomun başlangıcıdır:

Ben şeklinde bir mesaj almaya devam Ancak
{ 
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 

Herhangi işaretçiler? Buna

+2

Neden "devam et" e ihtiyaç duyuyorsunuz? –

cevap

24

Değişim it:

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

bir koşullu bir döngü değildir ve Atlamak gerek yer yok. İdam, şartlı olarak zaten devam eder.

(Ben de gerçekleşmesi gerekir değil. Tabii && kaldırdık, ancak her ihtimale karşı echo çıkmak için hiçbir neden yoktur başarısız olur.)

+0

Teşekkürler açıklamadan sonra daha mantıklı :) – user1190083

+1

+1 devam etmemek ve başarısızlık başarısızlık devam etmek için devam ediyor. –

1

Evet. else continue'u bırakın. Tamamen gereksiz.

1

Sorun, genellikle for veya while döngüsünün sonraki yinelemesine geçmek için kullanılan continue satırıyla ilgilidir.

Bu nedenle, betiğinizin yalnızca else bölümünü kaldırması çalışmasına izin vermelidir.

İlgili konular