如何检查RPM .spec文件中是否存在文件?

时间:2014-08-14 15:04:50

标签: linux bash rpm rpm-spec

我有一个spec文件,需要检查文件的旧版本是否存在,如果存在,请将其删除。由于某种原因,它正在运行delete命令,无论文件是否存在并打印“没有这样的文件或目录”错误,这使我相信我的if语句检查文件是否存在是否有问题。这是我的代码。

if [ -e "/foo/bar/file.zip" ]; then
    rm -rf /foo/bar/file.zip
fi

感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

rm -rf命令无法成为该错误消息的来源,因为-f告诉rm永不失败(并且永远不会打印此类错误消息,请尝试它在本地rm -f /this/is/some/path/that/does/not/exist; echo $?)。 (当然,这意味着文件存在本身的测试是不必要的,因为rm -f并不关心。

此外,如果要删除文件,则不需要-r标记(如果不需要,则更安全,不包括它(或-f)。

所以其他东西必须打印那条消息。你在其他地方使用那个文件吗?旧套餐%preun中的任何内容都可能使用它吗?

答案 1 :(得分:1)

[ -f /foo/bar/file.zip ] && rm -f /foo/bar/file.zip || echo "File Not Found"

答案 2 :(得分:0)

您可能没有在文件路径和-e之间添加空格:

if [ -e"/foo/bar/file.zip" ]; then
    rm -rf /foo/bar/file.zip
fi

这将是同义词,这总是正确的:

if [ -n "-e/foo/bar/file.zip" ]; then
    rm -rf /foo/bar/file.zip
fi