在Bash中检查文件是否存在,如果存在则继续执行,否则退出。

27

我有一个脚本,它是一系列其他脚本中发送电子邮件的脚本之一。

在脚本开始时,我想检查文件是否存在,仅当存在时才继续执行,否则就退出。

这是我的脚本开头:

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
你为什么需要在这里使用“continue”? - Niall Byrne
3个回答

44

将它改为这样:

{
if [ ! -f /scripts/alert ]; then
    echo "File not found!"
    exit 0
fi
}
一个条件判断语句并不是循环,也没有需要跳转到的地方。执行流程会在条件判断后继续向下执行。
(我还删除了不必要的&&。虽然这种情况不应该出现,但如果echo失败了就没有理由不退出。)

谢谢你的解释,现在更有意义了 :) - user1190083
1
在失败的情况下继续失败,表示不断尝试失败是可取的。 - Mike Samuel
1
我会添加 >&2 并以非零值退出。 - David Barda

2
你的问题在于continue这一行,它通常用于跳过forwhile循环的下一个迭代。
因此,只需删除脚本中的else部分即可使其正常工作。

1

是的,去掉else continue。它完全没有必要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接