我需要帮助:以下命令行无效
TESTS := $(shell cat test_cases_file | egrep -v ^\s*(#|$) )
all: $(TESTS)
当我发布时:
make all
我收到类似“shell命令调用未完成”的错误。
答案 0 :(得分:3)
egrep
参数中缺少引号。如果我make
我也相信#是评论的开始。
显然只是添加引号无济于事,你也需要逃避#
。
编辑:
实际上$
也必须进行转义,如果make
使用$$
完成
试试这个:
TESTS := $(shell egrep -v '^\s*(\#|$$)' test_cases_file)
all: $(TESTS)
最后,你真的不需要丢弃空行 - 这不会有害:
TESTS := $(shell egrep -v '^\s*\#' test_cases_file)
all: $(TESTS)
答案 1 :(得分:0)
你偶然发现的可能是这样的事实,即括号在GNU Make中无法逃脱。
您可以使用帮助程序脚本解决此问题:
TESTS := $(shell ./grep.sh test_cases_file )
all: $(TESTS)
grep.sh
的位置:
cat $1 | egrep -v ^\s*(#|$)