Gnu make GNU使外壳功能在管道连接到切割时中断

Gnu make GNU使外壳功能在管道连接到切割时中断,gnu-make,Gnu Make,您好,我有一个MVE,我试图连接两个变量,然后管道切割 all: @echo $(APP_NAME) @echo $(CURRENT_BRANCH) @echo $(call EB_SAFE_NAME,$(CURRENT_BRANCH)) @echo $(shell echo "$(APP_NAME)-$(call EB_SAFE_NAME,$(CURRENT_BRANCH))" | cut -c 23) 输出: $ cicdtest $ issue

您好,我有一个MVE,我试图连接两个变量,然后管道切割

all:
    @echo $(APP_NAME)
    @echo $(CURRENT_BRANCH)
    @echo $(call EB_SAFE_NAME,$(CURRENT_BRANCH))
    @echo $(shell echo "$(APP_NAME)-$(call EB_SAFE_NAME,$(CURRENT_BRANCH))" | cut -c 23)
输出:

   $ cicdtest
   $ issue#13-support-multi-branch
   $ issue-13-support-multi-branch
   $ o

如果我删除
| cut-c23
,那么输出就可以了,但我确实需要限制为23个字符。在上面的第4条echo语句中,我做错了什么?

测试脚本中的行为与make中的不同,但问题在于明确使用cut,而不是make。以下工作如预期:

@echo$(shell echo$(APP_NAME)-(调用EB_SAFE_NAME,$(当前分支机构))| cut-c1-23)

Cut对不完整的范围有一些处理,但在make中(即使我使用的是bash),需要完整的范围:

字节、字符和字段从1开始编号,并用逗号分隔。 可以给出不完整的范围:-M表示1-M;N-表示从行尾到最后一个字段的N

选择权

-字节表 --字节=字节列表 仅打印字节列表中列出的位置中的字节。标签和 退格被视为任何其他字符;他们占了1 字节

-字符表 --characters=字符列表 仅在字符列表中列出的位置打印字符。这个 目前与“-b”相同,但国际化将改变这一点。 制表符和退格被视为与任何其他字符一样;他们 占1个字符


我觉得不错
cut
选择第23列的内容,即
o
:-)