verify:
@command -v gpg 2>/dev/null || { echo "Cound not find gpg. Aborting."; exit 1; }
我在 Makefile 中看到以下命令。我理解它执行以下操作:
verify
build
在 Makfile 中之前被调用@command
用于不回显正在运行的命令,也不回显将要调用的命令的输出-v gpg 2>/dev/null
将检查版本,如果未找到 gpg,它将错误输出(sterr)重定向到 null(nowhere)|| { echo "Cound not find gpg. Aborting."; exit 1; }
如果前一个命令产生错误,将会回显一条消息并以错误 1 退出当前脚本(返回 false,这就是 || 存在的原因)
我不明白的是-v gpg
。检查版本时,-v
通常会在命令后面出现。这样做有什么原因吗?
答案1
这-v
是command
内置的参数,而不是的参数gpg
,它不是在寻找“gpg”版本,而是在查看是否存在名为“gpg”的命令。
从help command
:
-v print a description of COMMAND similar to the `type' builtin
它类似于type
内置的:
$ command -v gpg
/usr/bin/gpg
如果无法找到该命令,它将返回非零退出状态,因此将运行“OR”部分:
|| { ... }
将会打印出:
Cound not find gpg. Aborting.
退出状态代码为“1”。