连接Ruby变量

时间:2014-09-04 17:13:40

标签: ruby concatenation

我有两个变量,我需要连接在一起以形成一个带有fqdn的服务器名称。由于权限问题,我只能访问某些文件来获取信息。也许下面不是获取ruby变量的最佳方法,但它们有效。如果有一种更有效的方式,我会全力以赴。无论如何,下面是变量。由于我不能从一个地方获取server / fqdn,我必须从两个不同的资源,一个文件和hostname命令中提取。我需要让他们成为server.fqdn.com:

$server=`grep server /etc/config_file | awk '{print $2}'`
$domain=`hostname -d`

再次,我试图让他们一起制作server.fqdn.com

谢谢!

3 个答案:

答案 0 :(得分:6)

在Ruby中使用像这样的全局变量不是一个好主意。 $表示全局,而不仅仅是PHP或Perl中的任何普通变量。

连接两个字符串:

fqdn = server + domain

或加入点:

fqdn = [ server, domain ].join('.')

请记住,grepawk操作可以内化到Ruby中,以避免两次出现问题。

答案 1 :(得分:2)

1)我对shell脚本知之甚少,但为什么你不能写:

awk '/server/ {print $2}' /etc/config_file

??你为什么需要grep?

2)您的程序无法在Mac OSX上运行,因为它的hostname命令没有-d标志(至少在版本10.6.8中)。请执行以下操作:

require 'socket'
puts Socket.gethostname 

获取您需要的信息?

如果是这样,你可以用红宝石做整件事。这不是你首先使用红宝石的原因,也就是说你不需要用贝壳脚鸡在泥土中划伤?

require 'socket'

domain = Socket.gethostname
server_name = nil

IO.foreach('/etc/config_file') do |line|
  if line.match /server/
    _, server_name = line.split(" ", 3)
    break
  end
end

something = "#{server_name}.#{domain}"
puts something

答案 2 :(得分:0)

也尝试使用二进制左移运算符! (AKA小于标志)

var = "Server"
var2 = "Domain"
var << var2

与说法相同:

var = "Server"
var2 = "Domain"
var3 = var.concat(var2)

希望这能为您提供更多选择!