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(无处)|| { echo "Cound not find gpg. Aborting."; exit 1; }
如果上一个命令产生错误,将回显一条消息并以错误 1 退出当前脚本(返回 false,这就是 || 存在的原因)
我不明白的是-v gpg
。检查版本时,-v
通常在命令之后。这样做有理由吗?
-v
是command
builtin 的参数而不是,gpg
它不是在寻找“gpg”版本,而是在寻找是否存在任何名为“gpg”的命令。来自
help command
:它类似于
type
内置:如果找不到该命令,它将返回非零退出状态,因此将运行“OR”部分:
这将打印出:
退出状态代码为“1”。