2013-12-22 6 views
6

私は、いくつかのアプリケーションをインストールする必要があるBASHスクリプトを作成しています。 ffmpegsoxOS Xでbrewのインストール先を探します

私のスクリプトは、私が最初に自作のインストールを確認する実行したとき、彼らは場所にあることを確認するには、次の

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 

#!/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 

その後、私はsoxffmpegが一緒にインストールされていることを確認

私が直面している問題は、Homebrewがインストールされているが非標準の場所にあるときです。

このスクリプトはPlaytypusで実行されているため、私はHomebrewのフルパスを使用する必要があります。

質問:私は確実にBASHスクリプトにHomebrewのインストールされたパスを取得できますか?あなたがwhich brewの出力をテストし、それに応じて物事に対処することができ

自分の質問に答える

+0

あなたは単に 'which'のgrep/awk/regexの標準出力をキャッチできませんか? :)それとも直接パイプしてください –

+0

はい、それは私のscrip.Youが私にインスピレーションを与えたエラーメッセージを生成しました。下の私の答えを見てください。 – dwkns

+0

'var = $(which -s brew)'のようなものを使っていますか? –

答えて

9

...。 Homebrewがインストールされていない場合は、stderr/dev/nullにリダイレクトするif which brew 2> /dev/nullを使用できます。

brew --prefixは、実際のインストールパスではなく、自作インストールアプリケーションがシンボリックリンクされている場所へのパスを提供するので、ここでも便利です。この作業を作品と示し

スクリプト:ポインタのためのAllendar

#!/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 

感謝。

関連する問題