2013-12-22 3 views
6

Я создаю скрипт BASH, который требует установки нескольких приложений. ffmpeg и soxНайдите место установки пива на OS X

Чтобы убедиться, что они находятся в месте, когда мой сценарий работает, я сначала проверить для установки Homebrew с:

#!/bin/bash 
which -s brew 
if [[ $? != 0 ]] ; then 
    # Install Homebrew 
    /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 
fi 

Затем я проверяю, что sox и ffmpeg установлены с:

echo "---- checking for sox ----" 
which -s sox || /usr/local/bin/brew install sox 

echo "---- checking for ffmpeg ----" 
which -s ffmpeg || /usr/local/bin/brew install ffmpeg 

Проблема, с которой я столкнулась, - это когда Homebrew установлен, но находится в нестандартном месте.

Я должен использовать полный путь к Homebrew, потому что этот скрипт запускается в пределах Playtypus.

Вопрос: Как я могу надежно установить установленный путь Homebrew в сценарий BASH?

+0

Не можете ли вы просто поймать исходное выражение 'which' и grep/awk/regex на его результате? :) Или просто прямое прямое сообщение –

+0

Да, но это привело к появлению сообщений об ошибках, которые будут отображаться в моем скрипте. Однако вы дали мне вдохновение. См. Мой ответ ниже. – dwkns

+0

Вы используете что-то вроде 'var = $ (which -s brew)'? –

ответ

9

Отвечая на мой собственный вопрос ...

Вы можете проверить вывод which brew и иметь дело с вещами, соответственно. Чтобы изящно разобраться с случаем, когда Homebrew не установлен, вы можете использовать if which brew 2> /dev/null, который перенаправляет stderr на /dev/null.

brew --prefix также полезен здесь, поскольку он дает путь к тому, где установлены установленные приложения на домашнем компьютере, а не их фактический путь установки.

скрипт, который работает и показывает эту работу:

#!/bin/bash 
if which brew 2> /dev/null; then 
    brewLocation=`which brew` 
    appLocation=`brew --prefix` 
    echo "Homebrew is installed in $brewLocation" 
    echo "Homebrew apps are run from $appLocation" 
else 
    echo "Can't find Homebrew" 
    echo "To install it open a Terminal window and type :" 
    echo /usr/bin/ruby -e \"\$\(curl\ \-fsSL\ https\:\/\/raw\.github\.com\/Homebrew\/homebrew\/go\/install\)\" 
fi 

Благодаря Allendar для указателей.

Смежные вопросы