使用awk提取Makefile中的特定文本

Ara*_*ash 1 awk makefile

我有一个这种格式的配置文件

foo=bar
fie=boo
..
..
Run Code Online (Sandbox Code Playgroud)

并且有一个Makefile,我想提取一行配置文件,其中包含一个字符串'disk_size',然后提取分配给该变量的值

这是我在Makefile中使用的行

fallocate -l $(shell awk -F= '/disk_size/ { print $2 }' $(conf)) $@ 
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误,(整条线都被提取了.)

fallocate -l disk_size=268435456 disk.img
fallocate: invalid length value specified
Run Code Online (Sandbox Code Playgroud)

awk命令在终端工作,但它在Makefile中不起作用,为什么?

TNX

Wil*_*ell 6

你可能只需要逃避$:

fallocate -l $(shell awk -F= '/disk_size/ { print $$2 }' $(conf)) $@ 
Run Code Online (Sandbox Code Playgroud)

Make正在尝试使用变量$2而不是将字符串传递$2给awk.

  • @fedorqui`awk`不会看到'$$ 2`.Make会看到`$$ 2`并将'$ 2`传递给awk. (6认同)