在Ruby中读取一行文本时,如何删除“隐藏”字符?

时间:2011-08-10 19:13:14

标签: ruby puppet

我在Puppet中使用自定义Ruby函数从文件中读取一串文本。我将比较已读取的任何版本与已知版本列表,以确定我应该为该特定服务器使用哪个配置文件。问题是,当我将读取的版本与我的已知版本列表进行比较时,它们都不匹配。

我将变量打印到屏幕上,看起来很好。然后我在开头和结尾添加了一个' - ',这次打印了以下内容

-2.2#012-

有谁知道这是什么以及如何删除它?

这是我的流程。

处理应用安装的脚本

sudo echo "2.2" > /opt/version

我的红宝石功能

if FileTest.exists?("/opt/version")
    Facter.add("app_version") do
        setcode do
            version = File.open('/opt/version', &:readline)
            version
        end
     end
end

我的木偶清单

if versioncmp( $app_version, '2.2') == 0 {
            notice("===> Installing 2.2 Configs")
        } elsif versioncmp ($app_version, '2.3') == 0 {
            notice("===> Installing 2.3 Configs")
        } else {
            notice("===> No version match.  Continuing on.")
        }
}

1 个答案:

答案 0 :(得分:3)

File.readline包括行终止(在您的情况下,“\ n”)。 chomp将摆脱行终止:

version = File.open('/opt/version', &:readline).chomp

调试时,如果要查看变量中的实际,请使用p代替putsp将逃脱不可打印的字符,以便您可以看到它们:

puts "2.2\n"    # => 2.2
                #
p "2.2\n"       # => "2.2\n"