gpt4 book ai didi

linux - Makefile 中的通配符函数输出

转载 作者:太空宇宙 更新时间:2023-11-04 04:41:06 25 4
gpt4 key购买 nike

我试图获取ls的路径只是为了使用makefile进行测试。我做了以下事情:

paths = $(addsuffix /ls,$(subst :, ,$(PATH)))
repath = $(wildcard $(paths))
result = $(firstword $(repath))

all : ; @echo "the repath contains $(repath)"
@echo "the result contains $(result)"

通配符函数仅返回/bin/ls。这正是我想要的,但我一直在理解通配符输出。

我的 PATH 包含以下冒号分隔的目录(为了便于阅读,在此处分为多行):

/usr/local/cuda-6.0/bin
/usr/local/cuda-6.0/bin
/usr/lib64/qt-3.3/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/home/betatest/bin

添加后缀后将是:

/usr/local/cuda-6.0/bin/ls
/usr/local/cuda-6.0/bin/ls
/usr/lib64/qt-3.3/bin/ls
/usr/local/bin/ls
/usr/bin/ls
/bin/ls
/usr/local/sbin/ls
/usr/sbin/ls
/sbin/ls
/home/betatest/bin/ls

那么为什么通配符函数的输出只是/bin/ls

最佳答案

wildcard 函数给出存在且与给定模式匹配的事物的列表。在这种情况下,给定的模式是

/usr/local/cuda-6.0/bin/ls /usr/local/cuda-6.0/bin/ls /usr/lib64/qt-3.3/bin/ls /usr/local/bin/ls /usr/bin/ls /bin/ls /usr/local/sbin/ls /usr/sbin/ls /sbin/ls /home/betatest/bin/ls

我怀疑这些文件中唯一实际存在的文件是 /bin/ls,所以这就是结果。

关于linux - Makefile 中的通配符函数输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28404061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com