自定义bash通配符扩展

时间:2012-04-28 05:51:43

标签: linux bash

如果我这样做

*.c

它将返回以.c结尾的文件列表,以空格分隔。但是,我希望它返回一个文件列表,前缀为#include ",后缀为"\n

e.g。输出

#include "blah.c"
#include "meh.c"
#include "hehe.c"

我想把这个结果输入gcc -xc -,如果这个命令是一个单行,那么加分。

(不,我不想只是cat *.c,因为它会丢失源位置信息)

3 个答案:

答案 0 :(得分:2)

也许像

for f in *.c ; do
  printf '#include "%s"\n' $f
done | gcc -xc -

应该做你想做的事情

但是,gcc接受多个源文件,因此您可以执行

gcc -Wall *.c -o yourprog -lyourlibrary

您也可以将-g -O -flto传递给gcc

答案 1 :(得分:2)

有一种更简单的方法:

printf '#include "%s"\n' *.c

答案 2 :(得分:1)

我没有测试过,但这可能会这样做

表示* .c;做一个回声' #include"' $'"' ;完成| gcc -xc -