noo*_*ler 121 unix linux posix makefile
我编写了一个程序,用于将其输出打印到stdout的赋值.赋值规范要求创建一个Makefile,在调用make run > outputFile时应运行程序并将输出写入文件,该文件的SHA1指纹与规范中给出的指纹相同.
我的问题是我的makefile:
...
run:
java myprogram
Run Code Online (Sandbox Code Playgroud)
还会将运行我的程序的命令(例如java myprogram)输出到输出文件,这样我的文件就会包含这个额外的行,导致指纹错误.
有没有办法在没有命令调用回显到命令行的情况下执行命令?
小智 205
添加@到命令的开头告诉gmake不要打印正在执行的命令.像这样:
run:
@java myprogram
Run Code Online (Sandbox Code Playgroud)
正如Oli所说,这是Make而不是Bash的一个特征.
另一方面,Bash永远不会回显正在执行的命令,除非你明确告诉它(即使用-x选项).
小智 61
更简单,使用make -s(静音模式)!
Kie*_*ham 20
你也可以使用 .SILENT
.SILENT: run
hi:
echo "Hola!"
run:
java myprogram
Run Code Online (Sandbox Code Playgroud)
在这种情况下,make hi将输出命令,但make run不会输出.
小智 8
在命令前面加上 an 的效果@可以通过在行上使用尾部反斜杠来扩展命令来扩展到一个部分。如果.PHONY需要一个命令来抑制输出,则可以以以下内容开始本节:
@printf "..."
Run Code Online (Sandbox Code Playgroud)