[bash] 홈브류 패키지가 설치되었는지 감지

시스템에 여러 홈브류 패키지가 설치되어 있는지 감지하는 쉘 스크립트를 작성하려고합니다. 이를 달성하기 위해 brew 명령을 사용하는 방법이 있습니까?

의 종료 코드를 사용해 보았습니다 brew install <formula> --dry-run. 그러나 이것이없는 경우 패키지를 빌드합니다.



답변

당신이 사용할 수있는

brew ls --versions myformula

각 공식의 설치된 버전을 출력합니다. 수식이 설치되어 있지 않으면 출력이 비어 있습니다.

에서 얻을 수있는 최신 버전의 homebrew를 사용하는 brew update경우 다음을 실행하면됩니다 (Slaven에게 감사드립니다).

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

즉, 각 홈브류 패키지를 확인하는 것뿐만 아니라 도구의 존재를 확인하는 것이 좋습니다 (예 :에서 실행 파일 검색 $PATH). 사람들은 실제로 많은 방법으로 도구를 설치하는 경향이 있으며 homebrew는 그중 하나 일뿐입니다.


답변

이건 어떤가요?

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


답변

# install if we haven't installed any version
brew ls --versions $lib || brew install $lib
# install if we haven't installed latest version
brew outdated $lib || brew install $lib


답변

가장 쉬운 2 줄 : 1 단계, 설치되었는지 확인

$ realpath . || brew install coreutils

이것은 현재 디렉토리의 실제 경로를 인쇄하고 그렇지 않은 경우이를 설치합니다. 그리고 실제 경로를 찾을 수 없어도 실패하지 않습니다.

2 단계, 실제 코드에서 호출합니다.

$ realpath ${someDir}


답변