Как добавить команду в скрипт ruby ​​для терминала в Kali Linux? - PullRequest
0 голосов
/ 18 апреля 2019

Вопрос нуб, а как добавить команду в скрипт ruby ​​для терминала?

например ruby tool.rb и я хочу добавить команду -c, которая вызовет метод, который печатает бла-бла, а затем выполнит его через терминал в kali linux, так что это будет выглядеть примерно так ruby tool.rb -c. Кто-нибудь знает, как это сделать, и знает, как это называется?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

вы можете решить эту проблему с помощью метапрограммирования и хеша

def invoke
  puts "blah blah"
end

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

в терминале

ruby tool.rb -c

send вызывает приватный метод и будьте осторожны при его использовании

Надеюсь, это решение, которое вы ищете

0 голосов
/ 18 апреля 2019

Это называется запуском сценария / программы ruby ​​из командной строки и передачей «флагов», таких как -c, которые передаются в сценарий в качестве аргументов командной строки и представляют собой массив строковых значений, обычно разделяемых пробелами.

Вот ваш очень простой сценарий:

tool.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...