在tcsh中使用makefile变量

在tcsh中使用makefile变量,makefile,tcsh,Makefile,Tcsh,我创建了一个tcsh脚本,我想通过Makefile环境调用它。所以 我想引用这个tcsh脚本中的变量,这个脚本是我在Makefile环境中定义的。 我尝试将环境变量引用为$?变量,但这对Makefile环境中的变量不起作用。 如何执行此操作?如果要在命令中使用任何美元符号,则需要在生成规则中将其表示为$$。请注意。此外,make使用/bin/sh执行命令,因此不能在make规则中使用tcsh语法 如果必须的话,你所能做的就是做点什么 MAKEVAR = foo target:

我创建了一个
tcsh
脚本,我想通过
Makefile
环境调用它。所以 我想引用这个tcsh脚本中的变量,这个脚本是我在
Makefile
环境中定义的。 我尝试将环境变量引用为
$?变量
,但这对
Makefile
环境中的变量不起作用。
如何执行此操作?

如果要在命令中使用任何美元符号,则需要在生成规则中将其表示为
$$
。请注意。此外,make使用
/bin/sh
执行命令,因此不能在make规则中使用tcsh语法

如果必须的话,你所能做的就是做点什么

 MAKEVAR = foo
 target:
       tcsh -c 'echo $$HOME $(MAKEVAR)'
其他人所做的是

 MAKEVAR    = foo
 ANOTHERVAR = bar
 target:
       MAKEVAR=$(MAKEVAR) ANOTHERVAR=$(ANOTHERVAR) script.sh

这适用于所有
make
版本,而不仅仅是GNU make。

如果要在命令中使用,任何美元符号都需要在make规则中表示为
$$
。请注意。此外,make使用
/bin/sh
执行命令,因此不能在make规则中使用tcsh语法

如果必须的话,你所能做的就是做点什么

 MAKEVAR = foo
 target:
       tcsh -c 'echo $$HOME $(MAKEVAR)'
其他人所做的是

 MAKEVAR    = foo
 ANOTHERVAR = bar
 target:
       MAKEVAR=$(MAKEVAR) ANOTHERVAR=$(ANOTHERVAR) script.sh

这适用于所有的
make
版本,而不仅仅是GNU make。

如果您使用的是GNU make,。

如果您使用的是GNU make,。

那么。。。当然,sh和bash作为脚本语言要好得多。是的,也许吧,但是如果它在tcsh中工作得很好,为什么我要重新编写脚本呢?为了避免以后的麻烦。精通sh脚本是一项非常好的投资。使用tcsh是您来到这里的原因;这不是你将遇到的最后一次碰撞。你是对的。就个人而言,我更喜欢sh和bash,但这个脚本不是我的,我只是想按原样使用它……好的。实际上,您可以使用与
script.tcsh
相同的行,而不是
script.sh
,因为make调用的
/bin/sh
分配变量,然后内核启动tcsh(假设您的script.tcsh以
#!/bin/tcsh
或类似的开头)。那么。。。当然,sh和bash作为脚本语言要好得多。是的,也许吧,但是如果它在tcsh中工作得很好,为什么我要重新编写脚本呢?为了避免以后的麻烦。精通sh脚本是一项非常好的投资。使用tcsh是您来到这里的原因;这不是你将遇到的最后一次碰撞。你是对的。就个人而言,我更喜欢sh和bash,但这个脚本不是我的,我只是想按原样使用它……好的。实际上,您可以使用与
script.tcsh
相同的行,而不是
script.sh
,因为make调用的
/bin/sh
分配变量,然后内核启动tcsh(假设您的script.tcsh以
#!/bin/tcsh
或类似的开头)。谢谢!它们已经被导出,但我在运行脚本时忘记调用它们!谢谢它们已经被导出,但我在运行脚本时忘记调用它们!