April 18, 2008

Приятности Ruby

Вот сидел я тут и разбирался с zentest и в его коде я узнал (я конечно, мало чего еще знаю про ruby) прикольную штуку. Если записать команду между ``, то запустится процесс и вернет весь output. Например:


irb(main):001:0> volume_info = `vol`
=> " Volume in drive C is vista\n Volume Serial Number is E486-92B6\n"
irb(main):002:0>

Даже не хочется приводить пример сколько строк кода это займет, например на C#. (Против C# я ничего не имею %).

5 comments:

Roman Bataev said...

If you carefully read this http://rubylearning.com/satishtalim/tutorial.html from the beginning you would be aware about this really nice feature much earlier :)

Yury Korolev said...

nice link ;), thanks.

Dmitry Gusev said...

вообще-то это штука работает в любой консоли линукса :)

Yury Korolev said...

причем здесь любая консоль линукса? в Java и C# ты же не можешь так просто это выполнить. А если тебя смущает irb>, то это просто консоль интерактивного интепритатора руби. Я так могу писать в любом месте своих программ.

Dmitry Gusev said...

Я хотел сказать, что bash поддерживает такую штуку и ты можешь в программе на bash так записать... И в любом другом интерпретаторе в линуксе.

В винде (в BAT'никах) так не получится, потому что cmd такого не понимает :)

IIRC, ruby - это скриптовый язык и не удивительно, что все воможности скриптовых языков интегрированы в синтаксис :)

А синтаксис Java или C# естественно не поддерживает `` :) Но я могу одной строчкой выполнить команду, записав результат в переменную окружения и второй строкой прочитать значения этой переменной... Опять же в линуксе:) В винде спора нет - прийдется получать стандартный поток вывода и читать из него.