web-dev-qa-db-ja.com

ファイルが存在するかどうかを確認し、Bashで終了します。

メールを送信する他のチェーンの1つのスクリプトであるスクリプトがあります。

スクリプトの開始時に、ファイルが存在するかどうかを確認し、存在する場合のみ続行します。存在しない場合は単に終了します。

これが私のスクリプトの始まりです。

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

ポインタはありますか?

18
user1190083

これに変更してください:

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

条件はループではなく、ジャンプする必要のある場所はありません。いずれにせよ、実行は条件付きの後に続くだけです。

(不必要な&&も削除しました。それが起こるべきではありませんが、echoが失敗した場合に備えて、終了しない理由はありません。)

34
Kerrek SB

問題は、通常continueまたはforループの次の反復にスキップするために使用されるwhile行にあります。

したがって、スクリプトのelse部分を削除するだけで、スクリプトを機能させることができます。

2
Pluckerpluck

はい。落とす else continue。それは完全に不要です。

1
Kevin