gpt4 book ai didi

bash - makefile中的for循环不起作用

转载 作者:行者123 更新时间:2023-12-03 23:29:58 25 4
gpt4 key购买 nike

在我的 makefile 中有:

all:
for i in {20..50000..10} ; do \
echo "Computing $$i" ;\
done

应该在单独的行上分别打印数字 20、30、40、...、50000。

这适用于 Debian oldstable(GNU Make 4.0、GNU Bash 4.3),但不适用于 Debian stable(GNU Make 4.1 和 GNU Bash 4.4.12)。

Debian stable 只打印字符串“{20..50000..10}”。为什么是这样?在 makefile 中编写这个 for 循环的可移植方式是什么?

最佳答案

如果你在 shell 提示符下运行:

/bin/sh -c 'for i in {20..5000..10}; do echo $i; done'

您会发现它并没有像您希望的那样工作。 Make 总是调用 /bin/sh (应该是 POSIX shell)来运行菜谱:如果它使用调用 makefile 的人碰巧使用的任何 shell,这将是可移植性的灾难。

如果你真的想用 bash 语法编写你的 makefile 配方,那么你必须通过添加明确要求:

SHELL := /bin/bash

到你的makefile。

关于bash - makefile中的for循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com