2015-05-29 53 views
2

我正在创建一个bash脚本来设置开发环境。作为我的脚本的一部分,我需要安装Xcode命令行工具,并且我不希望脚本在安装完成之前继续执行。验证Xcode命令行工具安装在Bash脚本中

当我运行:

xcode-select --install 

它打印,如果要安装已请求或者它已经安装。我希望能够等到消息更改为已安装。

我的剧本的相关部分如下:

check="$(xcode-\select --install)" 
echo "$check" 
str="xcode-select: note: install requested for command line developer tools\n" 
while [[ "$check" == "$str" ]]; 
do 
    check="$(xcode-\select --install)" 
    sleep 1 
done 

不幸$check永远是空的,因为xcode-select --install不返回任何东西,而是相呼应的消息发送到终端。

+0

难道输出该消息到标准错误? 'xcode-select --install 2>&1'有帮助吗? –

+0

在_“...我的脚本的相关部分...”中,您有'check =“$(xcode- \ select --install)”',不应该是'check =“$(xcode-选择--install)“'?换句话说,'xcode-select'中的'-'和's'之间没有_backslash_。 – user3439894

+0

没有斜杠我在我的脚本的其余部分有错误,因为'select'是bash中的保留字 –

回答

1

我知道你可能已经解决了这个问题,我今天在这个问题上有一个破解,并且发现它打印到stderr而不是stdout。这是我用来确定是否安装了Xcode中的代码或不:

check=$((xcode-\select --install) 2>&1) 
echo $check 
str="xcode-select: note: install requested for command line developer tools" 
while [[ "$check" == "$str" ]]; 
do 
    osascript -e 'tell app "System Events" to display dialog "xcode command-line tools missing." buttons "OK" default button 1 with title "xcode command-line tools"' 
    exit; 
done 

希望这可以帮助别人的未来:)