Я не думаю, что это возможно, потому что команда, которую вы набираете для irb, должна анализировать как ruby, и все эти голые слова будут сообщать об ошибках вроде этого:
NameError: undefined local variable or method `hello' for main:Object
(Моя первая попытка,Я просто назвал это через cli hello
.)
Но если вы не возражаете против более радикальных изменений, вы можете сделать что-то вроде этого:
$ cat /tmp/test_cases
hello world
one
two
three
riding the corpse sled
$ ruby -e 'def f(arg) puts arg end' -ne 'f($_)' < /tmp/test_cases
hello world
one
two
three
riding the corpse sled
Я просто определил простую функциюf()
здесь показано, как это работает;Вы можете заменить f($_)
на $Client.cli($_)
и установить глобальную переменную $Client
в первом аргументе -e
.И вы можете пропустить < /tmp/test_cases
, если вы хотите ввести их в интерактивном режиме:
$ ruby -e 'def f(arg) puts arg end' -ne 'f($_)'
hello
hello
world
world
Конечно, если вы хотите, чтобы он был более продвинутым, чем я, я бы просто написал скрипт дляделайте все, а не создавайте что-то отвратительное из команд -pe
или -ne
.