我需要帮助:以下命令行不起作用
TESTS := $(shell cat test_cases_file | egrep -v ^\s*(#|$) )
all: $(TESTS)
当我启动时:
make all
我收到类似“shell 命令调用未完成”之类的错误。
您在egrep
参数中缺少引号。如果我是make
我也相信 # 是评论的开始。
显然,简单地添加引号无济于事,您也需要转义#
。
编辑:实际上$
也必须转义,以防万一make
使用$$
尝试这个:
TESTS := $(shell egrep -v '^\s*(\#|$$)' test_cases_file)
all: $(TESTS)
最后,您实际上并不需要丢弃空行 - 这不会造成伤害:
TESTS := $(shell egrep -v '^\s*\#' test_cases_file)
all: $(TESTS)
您偶然发现的可能是这样一个事实,即括号在 GNU Make 中是不可转义的。
您可以使用帮助脚本解决此问题:
TESTS := $(shell ./grep.sh test_cases_file )
all: $(TESTS)
在哪里grep.sh
:
cat $1 | egrep -v ^\s*(#|$)