如何在gmake中返回变量的第一个字符

发布于 2024-09-18 14:03:31 字数 170 浏览 6 评论 0原文

使用 GNU 的 make,我想提取变量的第一个字符。目前我正在使用 shell 函数让 bash 执行子字符串。我想知道是否有办法使用 gmake 的内置函数来执行相同的操作。

DIR=/user/$(shell echo "$${USER:0:1}")/$(USER)/

Using GNU's make, I'd like to extract the first character of a variable. Currently I'm using the shell function to have bash perform the substring. I'm wanting to know if there is a way using gmake's built-ins to do the same.

DIR=/user/$(shell echo "${USER:0:1}")/$(USER)/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉薄对峙 2024-09-25 14:03:31

这不是很令人满意,您必须添加 $(INITIALS) 直到您满意为止,但是:

INITIALS := a b c d e f g h i j k l m n o p q r s t u v w x y z
U := $(strip $(foreach a,$(INITIALS),$(if $(USER:$a%=),,$a)))

DIR = /user/$(U)/$(USER)/

也许明智的方法是记下 := 上面的用法,并将您的简单版本修改为 DIR := ...$(shell ...)... 以便 shell 命令仅被调用一次。

It's not very satisfying, and you'd have to add to $(INITIALS) until you were happy, but:

INITIALS := a b c d e f g h i j k l m n o p q r s t u v w x y z
U := $(strip $(foreach a,$(INITIALS),$(if $(USER:$a%=),,$a)))

DIR = /user/$(U)/$(USER)/

Perhaps the sensible approach would be to take note of the := usages in the above, and amend your simple version to DIR := ...$(shell ...)... so that the shell command is only invoked once.

花开柳相依 2024-09-25 14:03:31

http://www.gnu.org/software/make/manual/ make.html#Functions 是您可以使用 gmake 内置函数执行的所有操作的完整列表。

不幸的是,如果没有 $(shell) ,似乎无法提取第一个字符。

http://www.gnu.org/software/make/manual/make.html#Functions is a comprehensive list of everything you can do with gmake builtins.

It does not appear to be possible to extract the first character without $(shell), unfortunately.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文