在makefile中使用带有tcsh shell的foreach循环

时间:2015-01-28 20:24:58

标签: makefile csh tcsh

我正在尝试运行:

SHELL   =/usr/bin/tcsh
foo: 
    @foreach i ( "a" "b" "c")\
    echo $$i\
    end

但是我收到了这个错误

i: Undefined variable.
make: *** [foo] Error 1

我发现了这个question and answer,但看起来它使用的是bash,而不是tcsh。

2 个答案:

答案 0 :(得分:1)

简短的回答是,你不应该使用tcsh,至少不要使用makefile。我个人的观点是,现在是csh的高潮时期,所有衍生品都被归为历史垃圾箱。但它们绝对是are not usable在makefile中。

从该链接注意例如:您不能使用分号在csh中组合多行结构。

除了单行脚本存在的问题之外,它们不能与make的并行作业服务器支持一起使用,因为它们使用文件描述符做了很多事情。

答案 1 :(得分:1)

SHELL = /usr/bin/tcsh
# but we can't use its loop constructs as they're multi-line

foo: 
    @sh -c 'for i in a b c; do echo $$i; done'