28

I have a script that is one script in a chain of others that sends an email.

At the start of the script I want to check if a file exists and continue only if it exists, otherwise just quit.

Here is the start of my script:

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

However I keep getting a message saying:

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

Any pointers?

2

3 Answers 3

45

Change it to this:

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

A conditional isn't a loop, and there's no place you need to jump to. Execution simply continues after the conditional anyway.

(I also removed the needless &&. Not that it should happen, but just in case the echo fails there's no reason not to exit.)

Sign up to request clarification or add additional context in comments.

3 Comments

Thanks makes more sense after your explanation :)
+1 for not continuing and for continuing to fail on failure to fail.
I would add >&2 and exit with a non zero value
2

Your problem is with the continue line which is normally used to skip to the next iteration of a for or while loop.

Therefore just removing the else part of your script should allow it to work.

Comments

1

Yes. Drop the else continue. It's entirely unneeded.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.