是否可以在makefile中获取CSH脚本,因为我在SH中拥有大部分目标命令,而且我不想将makefile的全局shell更改为CSH? 在我的makefile中,我需要做这样的事情:
myTarget:
source specialPreCshellScript.csh
some_SH_steps ...
source specialPostCshellScript.csh
谢谢
答案 0 :(得分:1)
如果目标只是执行csh
脚本中的命令而没有得到任何结果,则无需source
。
如果你确实需要取回一些东西 - 例如一些变量的值 - 我的建议是两个写一个csh
包装脚本,将这些变量打印为sh
- 兼容的赋值。
#!/bin/csh -f
source specialPreCshellScript.csh
printf "%s=%s\n" variable1 "$variable1" another "$another" third "$third"
称之为
eval $(csh_wrapper_script); ... do stuff with the variables
由于Make的工作原理(默认情况下),当命令行完成时,您从eval
获得的设置将会丢失。因此,在您的示例中,some_SH_steps
将无法访问csh
的结果,除非您强制它在同一命令行中运行,可能是这样的:
eval $(csh_wrapper_script); some_SH_steps
并且类似地在csh
之后添加第二个some_SH_steps
脚本的包装器,如果您需要在同一个上下文中发生这种情况。