抓取命令的输出并将其插入到bash脚本中

时间:2012-05-31 19:14:37

标签: linux bash scripting

我有一个相当简单的bash脚本,我需要做一些更复杂,但我不确定如何做到这一点。到目前为止,脚本是这样的:

    #!bin/bash

    if rails -v | grep -q "3.2"
     then
    echo "Rails 3.2 installed. Uninstalling and adding Rails 3.1.4."
    gem uninstall rails -v=$version
    gem install rails -v=3.1.4
     else
    echo "Rails 3.2 not installed. Exiting."
    exit 1
 fi

正如您所看到的,它并不完整且非常基本。此脚本的总体目标是查看所述服务器是否已安装rails 3.2.x,如果是,则将其卸载并安装rails 3.1.4。我已经涵盖了所有内容,但实际将所需版本插入“gem uninstall”部分。 $ version部分应替换为服务器上rails -v输出的版本号。

对此有任何帮助表示赞赏。

感谢。

3 个答案:

答案 0 :(得分:1)

这样的东西
gem uninstall rails -v=$(rails -v | grep -o "3.2.*")

定制正则表达式以匹配版本号,和 grep会输出那个。

答案 1 :(得分:0)

 gem uninstall rails -v=$( rails -v )

答案 2 :(得分:0)

尝试用引号括起来,例如:gem uninstall rails -v="$( rails -v | sed 's/.* //' )"