下图中的 make 文件中的 sed 有什么用?

问题描述 投票:0回答:1

我正在关注教程https://makefiletutorial.com/#pattern-rules

make的递归使用

要递归调用 makefile,请使用特殊的

$(MAKE)
而不是
make
因为它会为你传递 make 标志,而不会自己传递 受到他们的影响。

new_contents = "hello:\n\ttouch inside_file"
all:
  mkdir -p subdir
  printf $(new_contents) | sed -e 's/^ //' > subdir/makefile
  cd subdir && $(MAKE)

clean:
  rm -rf subdir

看不懂台词

    printf $(new_contents) | sed -e 's/^ //' > subdir/makefile

谁能告诉

sed -e 's/^ //'
在做什么?

我尝试编译并在子文件夹中生成了make文件。

shell sed makefile
1个回答
0
投票

你的问题似乎有点不明确。你有什么不明白的?

在以下行中:

printf $(new_contents) | sed -e 's/^ //' > subdir/makefile
  • printf $(new_contents)
    new_contents的内容写入
    stdout
    .
  • sed -e 's/^ //'
    搜索以前导空格开头的第一行的内容并删除该空格。
    s/^ //
    是一个正则表达式。顺便说一句,在这种情况下,
    -e
    选项是不必要的,但它更明确。
  • > subdir/makefile
    将结果写入子目录 subdir 中名为 makefile
  • 的文件

就是这样。

© www.soinside.com 2019 - 2024. All rights reserved.