Detect if homebrew package is installed [closed]

2019-03-08 05:05发布

I'm about to write a shell script to detect if several homebrew packages are installed in the system. Is there a way to use a brew command to achieve that?

I tried using the exit code of brew install <formula> --dry-run. But this builds the package if it is missing.

2条回答
仙女界的扛把子
2楼-- · 2019-03-08 05:17

You can use

brew ls --versions myformula

to output the installed versions of the respective formula. If the formula is not installed, the output will be empty.

When using a recent versions of homebrew, which you can get with brew update, you can just run this (thanks Slaven):

if brew ls --versions myformula > /dev/null; then
  # The package is installed
else
  # The package is not installed
fi

That said, it is probably a good idea to check for the existence of the tool at all and not just checking for the respective homebrew package (e.g. by searching for the executable in the $PATH). People tend to install tools in a rather large amount of ways in practice, with homebrew being just one of them.

查看更多
Fickle 薄情
3楼-- · 2019-03-08 05:33

What about?

for pkg in macvim ngrep other needed packages; do
    if brew list -1 | grep -q "^${pkg}\$"; then
        echo "Package '$pkg' is installed"
    else
        echo "Package '$pkg' is not installed"
    fi
done
查看更多
登录 后发表回答