如何生成以数字顺序生成先决条件列表?我想做这样的事情:
cat file1 file2 file10 file11 file21 | script
当我在bash shell和Makefile中尝试这个时:
cat file* | script
文件用于文件10 file11 file1 file21 file2 这不是我想要的。在bash中我可以强制解决这个问题:
cat file{[0-9],[0-9][0-9]}
和类似的技巧。但我不知道如何让make识别这些通配符选项,当我尝试在Makefile中添加这些变量时,我会遇到很多错误:
target: file{[0-9],[0-9][0-9]}
cat $^ | script
显然我不想单独列出每个文件,我只展示了几个例子,有数百个,是的,还有差距。那么我如何获得一个很好的制作配方,它将以数字顺序很好地使用我的文件? (我可以将所有文件从[数字]重命名为0 [数字],但这似乎是躲避并避免问题!)
答案 0 :(得分:1)
一种选择是使用
SHELL=/bin/bash
在makefile中。其他选项对我来说似乎有点复杂(($sort ...)
不处理数字比较)。
答案 1 :(得分:1)
这可能对您有用:
# mkdir test
# cd test
# touch test{a,b}{9..11}.txt
# echo *
testa10.txt testa11.txt testa9.txt testb10.txt testb11.txt testb9.txt
# echo $(ls -v *)
testa9.txt testa10.txt testa11.txt testb9.txt testb10.txt testb11.txt
# echo testa*
testa10.txt testa11.txt testa9.txt
# echo $(ls -v testa*)
testa9.txt testa10.txt testa11.txt
答案 2 :(得分:0)
不是最优雅的解决方案,但使用:
cat file? file?? file??? | script # add more file?'s as necessary
将达到你想要的效果。
(作为奖励,它使你的命令看起来越来越绝望了。)