0

我正在尝试编写一个脚本来读取源文件列表并gcc使用以下命令编译它们:find $source -name '*.c' -or -name '*.cpp' -execdir gcc {} -o $output \;我能够找到源文件,但它们不是用gcc. 我必须做什么才能真正编译它们?

4

1 回答 1

2

-execdir操作作为表达式的一部分进行评估。-a优先于-o,因此find表达式如下:

find $source \( -name '*.c' \) -or \( -name '*.cpp' -execdir gcc {} -o $output \; \)

您需要在表达式中添加括号以强制find按照您的意愿行事:

find $source \( -name '*.c' -or -name '*.cpp' \) -execdir gcc {} -o $output \;

一些更简单的例子:

# touch a b
# find . -name a -o -name b -print
./b
# find . -name a -print -o -name b
./a
# find . \( -name a -o -name b \) -print
./b
./a
于 2013-04-23T18:54:54.370 回答