显示并执行

Jua*_*blo 18 foreach makefile

在这个makefile中

dirs = $(shell ls)
clean:
    $(foreach dir,$(dirs),echo $(dir);)
Run Code Online (Sandbox Code Playgroud)

输出是

$ make clean
echo bin; echo install.sh; echo Makefile; echo README.md; echo utils;
bin
install.sh
Makefile
README.md
utils
Run Code Online (Sandbox Code Playgroud)

为什么它首先显示命令,然后执行它?我怎么能省略第一行?

Fli*_*mzy 35

使用@字符前置命令.例:

dirs = $(shell ls)
clean:
    @$(foreach dir,$(dirs),echo $(dir);)
Run Code Online (Sandbox Code Playgroud)


Chn*_*sos 5

手册5.2食谱回显,我的粗体强调)中:

通常,在执行配方之前,请在配方的每一行进行打印。我们之所以称呼它为回声,是因为它看起来像您自己在键入行。

当一条线以开头时@,该行的回声被抑制。该@线路被传递到前壳被丢弃。[...]


或者:

制作-sor --silent标志可防止所有回显,就好像所有食谱都以开头。@