我需要创建一个包含目录的数组,然后对其进行 inereate,在每个步骤中再创建一个数组,其中将包括通过“查找”命令为每个目录找到的所有文件,并迭代该数组。我试图做这样的事情:
declare -a arr=(a b c) ;\
for key in "$${arr[@]}" ; do \
...
done\
但它不起作用。 即使这样也会出错:
all:
declare -a array=(a b c) ;\
echo "$${array[1]}" \
获取错误:
/bin/sh: 1: Syntax error: "(" unexpected
Makefile:4: recipe for target 'gg' failed
make: *** [gg] Error 2
最佳答案
这是因为 make 在运行配方时总是调用 /bin/sh
(POSIX shell),除非您以不同的方式告诉它。您使用的语法特定于 /bin/bash
shell,在 /bin/sh
中不可用。
如果你想使用 /bin/bash
运行你的食谱,你必须通过将此添加到你的 makefile 来明确告诉 make 这样做:
SHELL := /bin/bash
参见 For loop in makefile not working寻找另一个答案。
关于linux - 我如何初始化然后在 linux makefile 中迭代数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50204792/