Make

makefile 命令中的驚嘆號有什麼作用?

  • July 29, 2021

我試圖了解驚嘆號(和讀取)在我使用的程式碼庫中 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 $?

引用自:https://unix.stackexchange.com/questions/660387