我的 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
。