0

菜鸟问题,但是如何在终端的 ruby​​ 脚本中添加命令?

例如ruby tool.rb,我想添加一个命令,该命令-c将调用一个打印 blah blah 的方法,然后通过 kali linux 中的终端执行它,所以它看起来像这样ruby tool.rb -c。有谁知道如何做到这一点并知道这叫什么?

4

2 回答 2

0

你可以借助元编程散列来解决这个问题

def invoke
  puts "blah blah"
end

fun = {"-c": "invoke"}
send(fun[:"#{ARGV[0]}"])

在终端

ruby tool.rb -c

发送调用私有方法也要谨慎使用

希望,这是您正在寻找的解决方案

于 2019-04-18T06:54:57.930 回答
0

这称为从命令行运行 ruby​​ 脚本/程序并传递“标志”,例如-c作为命令行参数传递给脚本,并且通常是由空格分隔的字符串值数组。

这是您非常简单的脚本:

工具.rb

#!/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
于 2019-04-18T04:16:11.680 回答