shell - 检查 PEAR 版本

标签 shell stdout pear

我正在使用 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

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

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

最佳答案

(假设你的 shell 是一个像 bash 一样的 linux/unix 变体)

我没有要测试的 pear ,但我猜想缺少的版本信息将发送给 STDERR,所以请尝试

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

这仅匹配以“PEAR 版本”开头的行。 's///' 是“匹配第一个表达式并将其替换为 '//”(什么都没有)的简写。

我希望这有帮助。

关于shell - 检查 PEAR 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8480950/

相关文章:

cocoa - 如何在 MacRuby 中执行命令、向其标准输入提供数据并从其标准输出读取数据?

php - 我可以将其他参数传递给 PEAR_ERROR_CALLBACK 的处理程序吗?

bash - 在 unix FOR LOOP 中显示语法错误(错误标记为 "<")

bash - 使用 shell 变量查找具有多个文件名的名称

bash - 如何将 shell 脚本 stdout/stderr 打印到文件/s 和控制台

php - 如何从站点根目录使用我的服务器的 PEAR 包

php - PEAR - 仍然相关吗?

linux - 使用shell脚本快速读取Arduino数据

java - 在java程序中发送shell命令

R从系统命令的标准输出读取数据到数据帧