我有一个spec文件,需要检查文件的旧版本是否存在,如果存在,请将其删除。由于某种原因,它正在运行delete命令,无论文件是否存在并打印“没有这样的文件或目录”错误,这使我相信我的if语句检查文件是否存在是否有问题。这是我的代码。
if [ -e "/foo/bar/file.zip" ]; then
rm -rf /foo/bar/file.zip
fi
感谢任何帮助。
答案 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