【发布时间】:2013-12-22 10:52:18
【问题描述】:
我正在创建一个需要安装几个应用程序的 BASH 脚本。 ffmpeg 和 sox
为了确保它们在我的脚本运行时就位,我首先检查 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 中运行。
所以问题是:如何在 BASH 脚本中可靠地获取 Homebrew 的安装路径?
【问题讨论】:
-
你就不能抓住
which的标准输出和 grep/awk/regex 的结果吗? :) 或者直接使用管道 -
是的,但是这会产生错误消息以显示在我的脚本中。但是你给了我灵感。请参阅下面的答案。
-
你在用
var=$(which -s brew)之类的东西吗?