菜鸟问题,但是如何在终端的 ruby 脚本中添加命令?
例如ruby tool.rb
,我想添加一个命令,该命令-c
将调用一个打印 blah blah 的方法,然后通过 kali linux 中的终端执行它,所以它看起来像这样ruby tool.rb -c
。有谁知道如何做到这一点并知道这叫什么?
菜鸟问题,但是如何在终端的 ruby 脚本中添加命令?
例如ruby tool.rb
,我想添加一个命令,该命令-c
将调用一个打印 blah blah 的方法,然后通过 kali linux 中的终端执行它,所以它看起来像这样ruby tool.rb -c
。有谁知道如何做到这一点并知道这叫什么?
你可以借助元编程和散列来解决这个问题
def invoke
puts "blah blah"
end
fun = {"-c": "invoke"}
send(fun[:"#{ARGV[0]}"])
在终端
ruby tool.rb -c
发送调用私有方法也要谨慎使用
希望,这是您正在寻找的解决方案
这称为从命令行运行 ruby 脚本/程序并传递“标志”,例如-c
作为命令行参数传递给脚本,并且通常是由空格分隔的字符串值数组。
这是您非常简单的脚本:
#!/usr/bin/env ruby
if ARGV[0] == '-c'
puts 'blah blah'
end
您可以完全按照您的要求从命令行运行它。
ruby tool.rb -c
如果您需要其他参数或想要将其他内容传递给您的标志,您可以按照我提到的那样做ARGV
一个数组,该数组由在您的 ruby 脚本名称之后传递的字符串构成,因此:
#!/usr/bin/env ruby
if ARGV[0] == '-c'
puts "blah blah #{ARGV[1]}" # array items are called by index
end
所以如果你这样做:
ruby tool.rb -c foo
你会得到:
blah blah foo