-1
我試圖獲得ls
的路徑只是爲了使用makefile進行測試。我做了以下內容: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
?
Not path,但repath包含的值表示ls(ls命令二進制文件)在系統上可用。但我想知道通配符函數如何給它。 – 2015-02-09 08:06:05
這個答案很清楚地解釋了,不是嗎? – tripleee 2015-02-09 08:36:07
@tripleee先生!我喜歡通配符函數的工作方式。我所看到的是;它與shell腳本類似: | grep
ls
我是否正在從軌道走向正義或逃走。 – 2015-02-09 08:44:03