Bash Makefile:在条件语句中使用命令输出
在makefile中,我想使用一个shell命令,比如command1=[some program][--flags],然后使用一个条件来查看输出是否包含使用grep的某个关键字 我的代码不起作用:Bash Makefile:在条件语句中使用命令输出,bash,makefile,conditional-statements,Bash,Makefile,Conditional Statements,在makefile中,我想使用一个shell命令,比如command1=[some program][--flags],然后使用一个条件来查看输出是否包含使用grep的某个关键字 我的代码不起作用: var=$([command 1] | grep [keyword]) if [ -z ${var} ]; then \ [command 2, with variables in it]; \ [command 3, with variables in it]; \ fi 你知道为什么吗?你展示
var=$([command 1] | grep [keyword])
if [ -z ${var} ]; then \
[command 2, with variables in it]; \
[command 3, with variables in it]; \
fi
你知道为什么吗?你展示的不是make语法,而是shell语法。所以我假设这是制作配方的一部分。你的问题是:
;\
)将整个配方传递给单个shell
$
符号加倍(${var}
)来转义make扩展。对所有shell变量展开执行相同的操作。您还可以用等效的反勾符号“`代替$()
命令替换,而不是$()
将要运行的命令放在shell脚本中,并使用运行它并将其输出保存在变量中。谢谢。我需要命令中脚本中的一些局部变量。还可以吗?作为参数传递给命令或脚本。我还不能升级投票,因为我是新手,但这很有效。非常感谢。即使你不能投票,你也可以接受答案,这对其他试图解决类似问题的人很有用。
target: prerequisite ...
var=`[command 1] | grep [keyword]`; \
if [ -z "$${var}" ]; then \
[command 2, with variables in it]; \
[command 3, with variables in it]; \
fi