Как использовать Ruby для сценариев оболочки? - PullRequest
162 голосов
/ 03 октября 2008

У меня есть несколько простых задач сценариев оболочки, которые я хочу выполнить

Например: выбор файла в рабочем каталоге из списка файлов, соответствующих некоторому регулярному выражению.

Я знаю, что могу делать такие вещи, используя стандартные bash и grep, но было бы неплохо иметь возможность взламывать быстрые сценарии, которые будут работать в Windows и Linux, без необходимости запоминать кучу программ и флагов командной строки и т.д.

Я пытался это сделать, но в конце концов запутался в том, где я должен получать информацию, такую ​​как ссылка на текущий каталог

Итак, вопрос в том, какие части библиотек Ruby мне нужно знать, чтобы писать сценарии оболочки ruby?

Ответы [ 13 ]

4 голосов
/ 03 октября 2008

«Как мне написать ruby» немного выходит за рамки SO.

Но чтобы превратить эти сценарии ruby ​​в исполняемые сценарии, укажите в качестве первой строки сценария ruby:

#!/path/to/ruby

Затем сделайте файл исполняемым:

chmod a+x myscript.rb

и уходи.

3 голосов
/ 30 августа 2012

Ответ webmat идеален. Я просто хочу указать вам на дополнение. Если вам приходится много работать с параметрами командной строки для ваших сценариев, вы должны использовать optparse . Это просто и очень помогает.

3 голосов
/ 03 октября 2008

В ruby ​​константа __FILE__ всегда будет указывать путь к скрипту, который вы запускаете.

В Linux /usr/bin/env ваш друг:

#! /usr/bin/env ruby
# Extension of this script does not matter as long
# as it is executable (chmod +x)
puts File.expand_path(__FILE__)

В Windows это зависит от того, связаны ли файлы .rb с ruby. Если они:

# This script filename must end with .rb
puts File.expand_path(__FILE__)

Если это не так, вы должны явно вызвать для них ruby, я использую промежуточный файл .cmd:

my_script.cmd:

@ruby %~dp0\my_script.rb

my_script.rb:

puts File.expand_path(__FILE__)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...