我想在我的 makefile 中使用 bash 计时变量 例如在我的终端我可以这样做并且它有效
MY_TIME=$SECONDS
echo $MY_TIME
但是当我在我的 makefile 中写这个时它不起作用
如何在我的 make 文件中使用这两行?
这就是我在做的事情
.PHONY: myProg
myProg:
MY_TIME=$SECONDS
echo $MY_TIME
在 Etan Reisner 的回答之后
这是我现在拥有的
.PHONY: myProg
myProg:
MY_TIME= date; echo $MY_TIME
但是我的回显结果是一个空行,它看起来不像是在存储日期
最佳答案
美元符号 ($MY_TIME
) 指的是 make 变量,它与 bash 变量 不同。
要访问 bash 变量,您必须使用双美元表示法 ($$MY_TIME
) 对美元进行转义。
.PHONY: myProg
myProg:
MY_TIME=$$SECONDS ; echo $$MY_TIME
如 Etan answer 中所述您不能将代码分成多行(除非您使用反斜杠),因为每个命令都在不同的子 shell 中执行,使得其他行无法访问变量。
在下面的示例中,SECONDS
的值将始终为 0
,因为它会在第二行的 shell 生成时重置。
.PHONY: myProg
myProg: # WRONG
MY_TIME=$$SECONDS
echo $$MY_TIME
关于bash - 在 Makefile 中使用 bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29500434/