【发布时间】:2018-06-30 03:21:03
【问题描述】:
我有一个这样创建的头文件列表:
expand=$(1)/$(1).h
HDRS=$(foreach x, $(DIRS), $(call expand,$(x)))
这会产生一个类似 a/a.h b/b.h ...的列表
但是当我在 for 循环中使用它时:
for i in $(HDRS) ; do \
echo $$i \
cp $$i $(some_dir) \
done
$$i 为空。 cp 失败了,只有一个参数。
$$i 的常见变体 ( $i, $$i, $(i), ${i} ) 不会改变任何东西,$(HDRS) 的常见变体 ("$(HDRS) )”等)。
gmake 将 for 循环回显为
for i in a.h b.h ; \
do \
echo $i \
cp $i somedir \
done
这看起来是正确的。
但是隐式 bash shell 发出错误“/bin/sh -c: line 5: syntax error: unexpected end of file”
gmake 然后由于命令失败而退出。
【问题讨论】:
-
如果您向我们展示您看到的实际输出(如果有的话),将会非常有帮助。
-
@MadScientist:添加了输出。
-
它显示了该错误,因为(如下所述)没有分号,cp 和
done关键字作为参数传递给 echo,而不是被解释为 shell 关键字。
标签: gnu-make