出力をstdoutに出力することになっている割り当て用のプログラムを作成しました。割り当て仕様では、make run > outputFile
として呼び出されたときにプログラムを実行し、仕様に指定されたものと同じSHA1フィンガープリントを持つファイルに出力を書き込むMakefileを作成する必要があります。
私の問題は、私のメイクファイル:
...
run:
Java myprogram
また、プログラムを実行するコマンド(Java myprogram)など)を出力ファイルに出力します。これにより、ファイルにこの余分な行が含まれ、フィンガープリントが間違っています。
コマンド呼び出しをコマンドラインにエコーせずにコマンドを実行する方法はありますか?
追加 @
コマンドの先頭に、実行中のコマンドを出力しないようにgmakeに指示します。このような:
run:
@Java myprogram
Oliが提案したように、これはMakeの機能であり、Bashの機能ではありません。
一方、Bashは、明示的にそうするように指示しない限り、実行中のコマンドをエコーしません(つまり、-x
オプション)。
さらに簡単に、make -s
(サイレントモード)を使用してください!
.SILENT: run
hi:
echo "Hola!"
run:
Java myprogram
この場合、 make hi
はコマンドを出力しますが、make run
は出力されません。
コマンドの前に@
を付けると、行の末尾にバックスラッシュを使用してコマンドを拡張することにより、セクションに拡張できます。出力を抑制するために.PHONY
コマンドが必要な場合、セクションを次のように開始できます。
@printf "..."