我试图了解我使用的代码库中 Makefile 中的以下命令中感叹号(和读取)的影响。
check-format:
! gofmt -s -l . | read;
! go run golang.org/x/tools/cmd/goimports -l . | read;
这些命令在 Mac 和其他基于 UNIX 的系统上运行。
很多关于 bash 脚本中感叹号的问题都提到它们是为了历史扩展。但是,在上面的 Makefile 上下文中,它似乎没有意义。
如果您能帮助理解!
和 管道read
在这里完成的任务,我们将不胜感激。谢谢你!
答案1
作为钢铁司机推测,这不是一个 Make 构造,而是一个 shell 构造:通过管道传递 toread
提供对内容的测试,而否定它则提供对空性的测试。
! command | read
command
如果没有产生输出则成功。
你可以在不使用 Make 的情况下看到这一点:
! true | read; echo $?
! echo bar | read; echo $?