2009-10-14 2 views
0

Я закончил свой короткий файл для задания домашней работы, в котором используется IO.popen («command»). Readlines для захвата STDOUT этой команды. Тем не менее, мне нужно написать сценарий оболочки для переноса моего рубинового файла. Нет проблем, но каким-то образом его включение в сценарий оболочки вызывает зависание readlines.using ruby ​​popen, завернутый в сценарий оболочки

ruby script.rb foo example > example.out 

это работает

script.sh foo example >example.out 

это висит на readlines. ruby script.rb - это все, что script.sh содержит.

ответ

1

Похоже, вы забыли передать свои аргументы команде ruby. Вы также можете быть не в состоянии указать переводчика

script.sh

#!/bin/sh 
ruby script.rb "[email protected]" 

В качестве альтернативы можно просто добавить #!/usr/bin/ruby к началу script.rb и сделать его исполняемым (chmod +x script.rb). Это не сценарий оболочки. Но обычно это предпочтительный способ выполнения скрипта на языке интерпретации.

Как только это сделано, вы можете запустить его с

./script.rb

+0

должен быть/USR/бен/рубин (без «е» в пользователя) – gustavgans

+0

Спасибо за указание на это. Иногда пальцы быстрее, чем мозг. – EmFi

+0

в качестве альтернативы,/usr/bin/env ruby – perimosocordiae