我有两个变量,我需要连接在一起以形成一个带有fqdn的服务器名称。由于权限问题,我只能访问某些文件来获取信息。也许下面不是获取ruby变量的最佳方法,但它们有效。如果有一种更有效的方式,我会全力以赴。无论如何,下面是变量。由于我不能从一个地方获取server / fqdn,我必须从两个不同的资源,一个文件和hostname命令中提取。我需要让他们成为server.fqdn.com:
$server=`grep server /etc/config_file | awk '{print $2}'`
$domain=`hostname -d`
再次,我试图让他们一起制作server.fqdn.com
谢谢!
答案 0 :(得分:6)
在Ruby中使用像这样的全局变量不是一个好主意。 $
表示全局,而不仅仅是PHP或Perl中的任何普通变量。
连接两个字符串:
fqdn = server + domain
或加入点:
fqdn = [ server, domain ].join('.')
请记住,grep
和awk
操作可以内化到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)
希望这能为您提供更多选择!