bash – 使用变量创建命令

我一直在学习制作,并且正在努力解决问题.我对这种一般结构有一些规则.

FILE = "myfile.txt"

test :
    YOUR = $(subst my,your,$(FILE));\
    cat $(FILE) $(YOUR)

我希望最终结果是运行命令:

cat myfile.txt yourfile.txt

相反,我得到以下……

YOUR = "yourfile.txt";\
    cat "myfile.txt" 
/bin/sh: YOUR: command not found
make: *** [test] Error 1

如果不是使用subst函数,我只是在makefile中执行YOUR =“yourfile”,一切看起来都很好.任何建议或我错过了一些非常基本的东西?我应该补充一点,我使用制表符而不是空格来为规则中的命令启动行.

最佳答案

FILE = "myfile.txt"

test :
    $(eval YOUR = $(subst my,your,$(FILE)))
    cp $(FILE) $(YOUR)

您必须使用配方中的eval功能(Define make variable at rule execution time)

点赞