linux - 我如何初始化然后在 linux makefile 中迭代数组?

标签 linux unix makefile gnu-make

我需要创建一个包含目录的数组,然后对其进行 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/

相关文章:

django - 如何使用 Upstart ?

python - Nginx/Django 文件上传权限

c - 如何在 fork() 之后将命令行参数传递给子进程

python - 在 I/O 重定向中执行 Python 脚本时出现 EOFError

c++ - 告诉 execl() 进程何时退出

linux - 如何使用 shell 脚本计算文件中两个时间条目之间的时间跨度?

makefile - 从 makefile 内部自动安装包

c++ - Unix 和 Linux API header 是否与 C++ 兼容?

makefile - 为不同目录下的源文件编写makefile

makefile - Wayland交叉编译makefile错误