我有一个这种格式的配置文件
foo=bar
fie=boo
..
..
并且有一个Makefile,我想提取一行配置文件,其中包含一个字符串' disk_size'然后提取分配给变量的值
这是我在Makefile中使用的行
fallocate -l $(shell awk -F= '/disk_size/ { print $2 }' $(conf)) $@
但是我收到了这个错误,(整条线被解压缩了。)
fallocate -l disk_size=268435456 disk.img
fallocate: invalid length value specified
awk命令在终端中工作,但它在Makefile中不起作用,为什么?
TNX
答案 0 :(得分:6)
您可能只需要逃避$
:
fallocate -l $(shell awk -F= '/disk_size/ { print $$2 }' $(conf)) $@
Make正在尝试使用变量$2
,而不是将字符串$2
传递给awk。
答案 1 :(得分:1)
如果你的配置文件真的是这种格式:
foo = bar
disk_size = 1234
您可以直接将其包含在Makefile中:
# Include configuration file
include $(conf)
target:
fallocate -l $(disk_size)
您还可以使用-
运算符忽略include
命令的错误,并在没有配置文件时指定默认值。
# Include configuration file
-include $(conf)
# Set default size
disk_size ?= 5678
target:
fallocate -l $(disk_size)