你好我有一个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 -c 23
,则输出正常,但我确实需要限制为23个字符。我在上面的第四个回声声明中做错了什么?
答案 0 :(得分:0)
测试脚本中的不同行为然后在make中,但问题在于明确使用cut,而不是make。以下按预期工作:
@echo $(shell echo $(APP_NAME)-$(call EB_SAFE_NAME,$(CURRENT_BRANCH)) | cut -c 1-23)
Cut对于不完整的范围有一些处理,但在make中(即使我使用bash)需要完整的范围:
字节,字符和字段从1开始编号,并以逗号分隔。 可以给出不完整的范围:-M表示1-M; N-表示N到行尾或最后一个字段。
选项
-b BYTE-LIST --bytes = BYTE-LIST 仅打印BYTE-LIST中列出的位置中的字节。标签和 退格被视为任何其他角色;他们占了1 字节。
-c CHARACTER-LIST --characters = CHARACTER-LIST 仅打印CHARACTER-LIST中列出的位置中的字符。该 现在与`-b'相同,但国际化将改变这一点。 制表符和退格键与任何其他字符一样对待;他们 占用1个角色。