运行ruby脚本并分配给变量Groovy/Jenkins
可能是一些简单的东西,但似乎没有得到我想要的输出,但是假设我有一个ruby脚本运行ruby脚本并分配给变量Groovy/Jenkins,ruby,jenkins,groovy,Ruby,Jenkins,Groovy,可能是一些简单的东西,但似乎没有得到我想要的输出,但是假设我有一个ruby脚本 class SlackNames def developers { "Richard Lewis" => "/@richlewis", "Name 2" => "/@name2", "Name 3" => "/@name3" } end def slack_handle puts developers["#{ARGV[0]}"] if developers.key?("
class SlackNames
def developers
{ "Richard Lewis" => "/@richlewis",
"Name 2" => "/@name2",
"Name 3" => "/@name3"
}
end
def slack_handle
puts developers["#{ARGV[0]}"] if developers.key?("#{ARGV[0]}")
end
end
SlackNames.new.slack_handle
我会在命令行上运行它
ruby slack_names.rb "Richard Lewis"
正如您所看到的,当我在Groovy脚本中运行它时,它将只返回一个给定值,如何将该值保存到变量
-- Groovy
-- DEV_NAME here equals "Richard Lewis"
SLACK_NAME = sh """#!/bin/bash -l
ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
"""
echo "${SLACK_NAME}"
当我回显SLACK\u NAME
时,它返回为空白
我做错了什么
谢谢首先,您是从类内部调用该方法的。(可能只是文章中的一个输入错误) 第二,为什么是“.key”(“{ARGV[0]}”)”之类的东西?在ruby中,如果哈希没有给定键的值,它将只返回nil,而nil的布尔值为false
class SlackNames
def developers
{ "Richard Lewis" => "/@richlewis",
"Name 2" => "/@name2",
"Name 3" => "/@name3"
}
end
def slack_handle
developers["#{ARGV[0]}"] if developers["#{ARGV[0]}"]
end
end
puts SlackNames.new.slack_handle
至少对我来说这是正确的
ruby slack_names.rb "Richard Lewis"
=> /@richlewis
我希望这会有所帮助,并且我正确地理解了您的问题。首先,您仍然在类中调用该方法。(可能只是文章中的一个输入错误) 第二,为什么是“.key”(“{ARGV[0]}”)”之类的东西?在ruby中,如果哈希没有给定键的值,它将只返回nil,而nil的布尔值为false
class SlackNames
def developers
{ "Richard Lewis" => "/@richlewis",
"Name 2" => "/@name2",
"Name 3" => "/@name3"
}
end
def slack_handle
developers["#{ARGV[0]}"] if developers["#{ARGV[0]}"]
end
end
puts SlackNames.new.slack_handle
至少对我来说这是正确的
ruby slack_names.rb "Richard Lewis"
=> /@richlewis
我希望这会有所帮助,并且我正确地理解了您的问题。只要添加到CookieNinjas答案中,一旦我在groovy中添加了这个,一切都会正常工作
SLACK_NAME = sh (
script: """#!/bin/bash -l
ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
""",
returnStdout: true
)
为了补充CookieNinjas的答案,我在groovy中添加了这个选项后,一切都按预期工作
SLACK_NAME = sh (
script: """#!/bin/bash -l
ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
""",
returnStdout: true
)
我认为这与Ruby没有任何关系。它是关于如何将一个值从shell脚本中获取到groovy中。您的Ruby代码中也有一个错误。谢谢。。。您想详细说明一下吗?错误在于您在结束类的声明之前实例化了该类。实际问题是什么?对不起,我对Groovy一无所知。我建议你修改一下你的问题,把它减少到最基本的部分。也就是说,删除ruby部分,然后简单地询问人们如何在Groovy中存储shell脚本的返回值。shell脚本可以是
echo“foo”
?啊,是的,我明白了。。谢谢你指出这一点out@Richlewis您是否设法找到了如何将值从Ruby脚本返回Groovy脚本的方法?我需要完全相同的东西?我想这和Ruby一点关系都没有。它是关于如何将一个值从shell脚本中获取到groovy中。您的Ruby代码中也有一个错误。谢谢。。。您想详细说明一下吗?错误在于您在结束类的声明之前实例化了该类。实际问题是什么?对不起,我对Groovy一无所知。我建议你修改一下你的问题,把它减少到最基本的部分。也就是说,删除ruby部分,然后简单地询问人们如何在Groovy中存储shell脚本的返回值。shell脚本可以是echo“foo”
?啊,是的,我明白了。。谢谢你指出这一点out@Richlewis您是否设法找到了如何将值从Ruby脚本返回Groovy脚本的方法?我需要完全相同的东西?谢谢,有助于唤起我对一些事情的记忆…-)这不是理查德·刘易斯(richard lewis),我在想你,在一些事情上帮我唤起了记忆…-)这不是我想到的理查德·刘易斯