我有一段tcl代碼,用於評估一組變量。這些變量的值,則需要作爲參數在配方取消引用使變量內聯
enter code here
MY_ENV_VAR?=45
foo:ARG1?=test
foo:OUTFILE:=./testFile
foo:
$(shell ./evalVars.tcl -arg1 $(ARG1) -outFile $(OUTFILE))
$(foreach var,$(shell cat $(OUTFILE)),$(eval $(var)))
runcmd -value $(myvar)
出的文件被傳遞到下一行將包含一系列使變量賦值「MYVAR:= 400」
在使用殼功能的任何命令行/ make變量不會作爲環境變量傳遞給tcl shell。
如果我從tcl shell中取消引用env(MY_ENV_VAR),它不存在。 如果我不使用shell命令,則在創建out文件之前執行foreach/eval行,但這些變量在tcl shell中可見。
我確信有一個更優雅的方式來做到這一點。
感謝您的答覆線。猜測一樣多:-)。我嘗試了環境變量的方法,但使用.oneshell,但我想我遇到了一些問題,並以此結束。我可以使用&&與env變量相結合。你可以在單獨的配方中使用evalvars,但每個調用它的目標都需要傳遞某些參數並使用它設置的變量。如果需要,可以修改evalvars的輸出 –
我嘗試了你的替代方案,它運行良好,直到我遇到其值有特殊字符的變量。我試圖用''轉義這些組合' 作爲例子setenv a'b [c = 1]' –
對不起,我不明白這個問題。請提供您遇到問題的特殊值/變量分配類型的示例。 – MadScientist