我正试图从#{vm}获得第5到第7个角色但是我似乎无法让它发挥作用。我错过了什么?
puts "#{Colorable.wrap_color("Restarting VM's", :BLUE)}"
change_set.vms_to_restart.each do |vm|
puts "JH 0 - " + %x{hostname}
host_code = %x{hostname}[7,9]
vm_code = #vm[5,7] <---- THIS DOES NOT WORK
puts "JH 1 - #{host_code}"
puts "JH 2 - #{vm_code}"
puts "JH 3 - #{vm}"
puts "Restarting ... #{vm}"
exit 1
vm.restart
end
puts " "
输出:
Restarting VM's
JH 0 - qdscild401
JH 1 - 401
JH 2 - <---------- BLANK
JH 3 - qdcld401.vm10
Restarting ... qdcld401.vm10
答案 0 :(得分:3)
在此代码中:
vm_code = #vm[5,7]
#
之后的所有内容都是评论。因此,该陈述是有效的:
vm_code = nil
该行应为
vm_code = vm[5,7]
如果vm
对象不是String
,您可以尝试
vm_code = vm.to_s[5,7]
答案 1 :(得分:3)
为了澄清,vm[5,7]
表示获得第六个字符和后面的六个附加字符(总共七个字符)。
所以
vm = 'abcdefghijklmno'
vm[5,7]
=> 'fghijkl'
如果您只想将第五个角色转换为第七个角色
vm[4,3]
=> 'efg'
答案 2 :(得分:1)
好啊 - 我试过了
vm_code = vm.to_s[5,7]
但它并没有在第7个角色之后修剪掉所有东西
Restarting VM's
JH 0 - qdscild401
JH 1 - 401
JH 2 - 401.vm1 <----- NOT TRIMMED after 7th
JH 3 - qdcld401.vm10
Restarting ... qdcld401.vm10