我发现了一个有趣的“特性”
DIR_INPUT=/测试 测试: # 测试日期(应该是昨天) 测试!-z“${DATE}” ls -lad ${DIR_INPUT}/{a,c}
但它似乎以一种奇怪的方式起作用:
提示# 进行测试 # 测试日期(应该是昨天) 测试 ! -z“20100120” ls -lad /测试/{a,c} /test/{a,c}:没有此文件或目录 *** 错误代码 2 make:致命错误:目标“测试”命令失败 迅速的#
当然如果我发出ls -lad /测试/{a,c}从我的 shell 作品中。
问题:我怎样才能让 make 像 shell 那样评估这个模式?
答案1
您可以使用 shell 函数 $(shell touch {a..c}) 来执行此操作,(也许也可以使用通配符函数?):
kbrandt@kbrandt-opadmin:~/scrap/make$ ls
foo
kbrandt@kbrandt-opadmin:~/scrap/make$ vim foo
kbrandt@kbrandt-opadmin:~/scrap/make$ ls
foo
kbrandt@kbrandt-opadmin:~/scrap/make$ cat foo
files:
$(shell touch {a..c})
kbrandt@kbrandt-opadmin:~/scrap/make$ make -f foo
make: `files' is up to date.
kbrandt@kbrandt-opadmin:~/scrap/make$ ls
a b c foo
kbrandt@kbrandt-opadmin:~/scrap/make$