2014-09-18 71 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