2014-09-18 68 views
0

我读过这个问题:Makefile: $subst in dependency list,但我仍然无法让我的shell脚本正常工作。在多行makefile bash脚本中使用'subst'?

我有一个生成文件与内容的行:

#@[email protected]|test_create|Syntax: commoncmdsyntax test_create test_name=<test-name>

甲目标运行一个多bash脚本,其中,所述commoncmdsyntax必须由含有单词和空格的字符串来代替。

在脚本中,我使用cut来指定变量desc字符串Syntax: commoncmdsyntax test_create test_name=<test-name>

问题是$(subst commoncmdsyntax,new text,$$desc)不能代替commoncmdsyntaxnew text

我试图用一个单词替换它,如XX,但它也不起作用。

+0

请编辑您的问题以显示'make -v'的输出。祝你好运。 – shellter 2014-09-18 17:56:44

+0

'make -v'报告我正在使用'GNU Make 3.81' – canellas 2014-09-18 18:17:28

+0

辅助扩展在make 3.81中可用。 – 2014-09-18 18:28:04

回答

1

subst功能(如$(subst commoncmdsyntax,new text,$$desc))是制作功能,所以请将运行任何规则,因此在你的脚本分配一个值desc之前执行替换。所以即使二次扩张按照您认为的方式工作,这种方法仍然会失败。

如果你想通过一个shell脚本制作(配方中的)一些内进行置换,明智的办法是在配方中这样做:

echo $dest | sed 's/commoncmdsyntax/new text/' 

我们可以给你一个更详细的解决方案如果你给我们一个minimal complete example的问题。

+0

我放弃了使用'subst',并以这种方式使用'sed'。谢谢! – canellas 2014-09-18 23:52:40