makefileコマンドの感嘆符は何をしますか?

makefileコマンドの感嘆符は何をしますか?

私が使用しているコードベースのMakefileの次のコマンドで感嘆符(および読み取り)の影響を理解しようとしています。

check-format:
    ! gofmt -s -l . | read;
    ! go run golang.org/x/tools/cmd/goimports -l . | read;

これらのコマンドは、Macや他のUNIXベースのシステムで実行されます。

Bashスクリプトの感嘆符に関する多くの質問は、歴史的な拡張のためのものであると言われています。しかし、上のMakefileの文脈では言葉にならないようです。

ここで何が起こっているのか理解し!て伝えるのを手伝ってくれてありがとう。readありがとうございます!

ベストアンサー1

スチールドライバーとして推測するこれは Make 構成ではなくシェル構成です。パイプを通して渡すとread内容のテストが提供され、これを否定すると無効性のテストが提供されます。

! command | read

command出力が生成されない場合は成功します。

Makeを使用せずにこれを見ることができます。

! true | read; echo $?
! echo bar | read; echo $?

おすすめ記事