Make
makefile 命令中的驚嘆號有什麼作用?
我試圖了解驚嘆號(和讀取)在我使用的程式碼庫中 Makefile 中的以下命令的影響。
check-format: ! gofmt -s -l . | read; ! go run golang.org/x/tools/cmd/goimports -l . | read;
這些命令在 Mac 和其他基於 unix 的系統上執行。
許多關於 bash 腳本中驚嘆號的問題都提到它們是為了歷史擴展。但是,在上述 Makefile 的上下文中,它似乎沒有意義。
將不勝感激任何幫助理解
!
和管道read
在這裡完成什麼。謝謝!
正如 steeldriver推測的那樣,這不是 Make 構造,而是 shell 構造:管道
read
提供了對內容的測試,否定它提供了對空虛的測試。! command | read
如果
command
不產生輸出則成功。你可以在沒有 Make 的情況下看到這個:
! true | read; echo $? ! echo bar | read; echo $?