command -v 自定义输出

Kar*_*son 2 bash

我目前有以下命令:

command -v gpg 2>/dev/null || { echo "Cound not find gpg. Aborting."; }
Run Code Online (Sandbox Code Playgroud)

我希望不是将输出重定向到 /dev/null,而是显示一条消息,说明命令的输出和 afterwords found!

IE

  • 如果没有找到 gpg: Cound not find gpg. Aborting.
  • 如果找到 gpg: gpg found at /usr/local/bin/gpg

ter*_*don 5

最简单的方法是这样的:

command -v gpg &>/dev/null && 
    echo "gpg found at  $(command -v gpg)" || 
    echo "Cound not find gpg. Aborting."
Run Code Online (Sandbox Code Playgroud)

当然这不是很优雅,因为它需要运行command两次。另一种选择是:

gpg=$(command -v gpg 2>/dev/null) && 
    echo "gpg found at $gpg." ||
    echo "Cound not find gpg. Aborting."
Run Code Online (Sandbox Code Playgroud)