检查 PEAR 版本

And*_*Vit 5 shell pear stdout

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

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
Run Code Online (Sandbox Code Playgroud)

但是,我无法分离1.9.0该结果的一部分并对其进行测试。pear 脚本似乎没有打印到 STDOUT,因为重定向也不起作用:

$ pear -V > pear_version
PEAR Version 1.9.0
...
$ cat pear_version
$
Run Code Online (Sandbox Code Playgroud)

如何捕获输出并将其传递给 grep 以便我可以仅返回“1.9.0”?

she*_*ter 2

(假设你的 shell 是 bash 等 linux/unix 变体)

我没有 pear 来测试,但我猜想缺少的版本信息将进入 STDERR,所以尝试

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

这只匹配以“PEAR Version”开头的行。's///' 是“匹配第一个表达式并将其替换为 '//'(无)的简写。

我希望这有帮助。