2

我在 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.")
        }
}
4

1 回答 1

3

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

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

调试时,如果您想查看变量中的真正p内容,请使用puts. p将转义不可打印的字符,以便您可以看到它们:

puts "2.2\n"    # => 2.2
                #
p "2.2\n"       # => "2.2\n"
于 2011-08-10T20:01:57.773 回答