5

要检查命令是否在 bash shell 中可用,我通常会这样做:

command -v $COMMAND >/dev/null 2>&1 || {
    echo >&2 "Error: this script requires the command '$COMMAND' to be available"
    exit 1
}

Windows 中的等价物是什么?

4

1 回答 1

3

你可以使用非常相似的东西

%command% >nul 2>&1 || (
    echo "Error: command not found"
    exit /b 1
)

当然,这实际上会执行命令,但是如果没有适当的参数,大多数命令将什么都不做。如果您想更确定,可以使用%command% /? >nul 2&1. 这将尝试为命令带来帮助页面,而不执行它

更新: 为避免完全执行命令,请考虑where.exe. 它与 Vista 和 Windows 7 捆绑在一起。对于其他操作系统,您可以下载它。下载方法请参考这篇文章

一旦你有了它,你可以用/Qswitch 运行它以避免额外的输出。返回码 0 表示找到命令。一旦我发现该where命令要求您提供扩展名。

另一方面,这里有一个冗长的讨论,关于在没有指定扩展名的情况下工作的批处理“单线”(但当您指定扩展名时实际上会失败)

于 2012-12-03T14:25:07.047 回答