2011-12-12 119 views
4

我正在使用Chef编写服务器自动化脚本,我需要检查PEAR包管理器的安装版本。命令行开关-V打印详细的版本信息发送到控制台:检查PEAR版本

PEAR Version: 1.9.0 
PHP Version: 5.3.5-1ubuntu7.2ppa1~lucid 
Zend Engine Version: 2.3.0 
Running on: Linux ubuntu-lucid-32-generic 2.6.32-33-generiC#72-Ubuntu SMP Fri Jul 29 21:08:37 UTC 2011 i686 

不过,我无法这一结果的部分1.9.0和测试反对孤立。梨脚本似乎并没有被打印到标准输出,因为重定向不工作之一:

$ pear -V > pear_version 
PEAR Version 1.9.0 
... 
$ cat pear_version 
$ 

我怎么能捕获输出,并把它传递到grep这样我就可以返回“1.9.0”?

回答

2

(假设你的shell是在Linux/Unix变种诸如bash)

我没有梨测试,但我猜想,缺少的版本信息是要STDERR,所以尽量

pearVer=$(pear -V 2>&1 | sed '/^PEAR Version: /s///') 

这只匹配以'PEAR版本'开头的行。 '//'是'short','匹配第一个表达式并用'//'替换(没有任何内容)。

我希望这会有所帮助。