rsync:如何复制可能不存在的文件而不会出现错误

rsync:如何复制可能不存在的文件而不会出现错误

我的 Makefile 中有一个命令,用于从外部源同步我的参考书目。如果rsync由于目标文件不存在而失败,rsync则会退出并显示错误 23。我可以隐藏通过将输出管道化到 来消除错误,但这仍然导致我的 Makefile 退出。当不存在时/dev/null,如何输出以下 Makefile 代码?"Hi"$(bib_dir)

sync_bibliography:
    rsync $(bib_dir) bib 2>/dev/null
    echo "HI"

答案1

您可以使用 OR 运算符||。如果前一个命令失败并返回 false,则执行右侧的命令。示例:

false || echo "The previous command failed"

或者你的情况

rsync $(bib_dir) bib 2>/dev/null || echo "HI"

答案2

将 rsync 命令放入 shell 脚本中,然后在 Makefile 中调用该 shell 脚本。在 shell 脚本的末尾,使用始终返回 true 的内容,例如sleep 0

相关内容