2013-09-09 2 views
1

Итак, я сделал просто рубиновый скрипт,Почему мой скрипт Ruby не выполняется?

#!/usr/bin/env ruby 

puts "Hello!" 

Когда я пытаюсь запустить его в терминале он не ставит «Привет!» на экране. Я попытался войти chmod +x test.rb (test.rb - это имя моего файла). Когда я запускаю его, он не дает мне ошибку, он просто не отображает «Привет!». Любая помощь будет высоко ценится. Я везде искал возможный ответ, и до сих пор ничего не нашел.

+1

Работает для меня. Тот же код. Я запускаю его с помощью ''./Test.rb'' –

ответ

2

Я предполагаю, что вы пытаетесь запустить его, как только test так:

$ test 

Но test is a bash builtin команда, которая не производит никакой продукции, он просто задает возвращаемое значение. Если вы правильно запустите свой скрипт:

$ ./test.rb 

затем вы увидите что-то. Обратите внимание на явный путь ./, текущий каталог редко (и, надеюсь, никогда) в вашем PATH, поэтому вам нужно сказать ./, чтобы запустить что-то в текущем каталоге (если, конечно, вы не в /bin, /usr/bin и т. Д.).


В комментариях вы говорите, что есть некоторые Ctrl + M символов в вашем скрипте:

$ cat -e test.rb 
#!/usr/bin/env ruby^M^Mputs "Hello!" 

Я не вижу никаких $ с в этом cat -e выход, так что вы не имеют какие-либо фактические маркеры конца строки, только некоторые символы возврата каретки (это ^M). Один CR - это старый конец MacOS, Windows использует пару CR-LF, а Unix (включая OSX) использует только один LF для обозначения конца строки текста. Так как у вас нет каких-либо EOLS, оболочка видит только одну строку, которая выглядит как:

#!/usr/bin/env ruby ... 

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

+0

Мой скрипт сохраняется как test.rb в папке с именами программ. Это копия моего терминала: unknown20c9d0cc586f: программы carlosguillen $ ruby ​​test.rb unknown20c9d0cc586f: programs carlosguillen $ ./test.rb Как вы можете видеть, на экран ничего не выводится. Файл содержит исходный скрипт. – CarlosGui

+0

Это не имеет никакого смысла. Вы уверены, что 'test.rb' содержит только то, что, по вашему мнению, содержит? Вы проверили что-нибудь странное с 'cat -e test.rb'? –

+0

Спасибо за ваш ответ. Это то, что я получаю после ввода cat -e test.rb: unknown20c9d0cc586f: программы carlosguillen $ cat -e test.rb #!/Usr/bin/env ruby ​​^ M^Mputs "Привет!«unknown20c9d0cc586f: programs carlosguillen $. У меня нет программы«^M^M ». – CarlosGui

0

Как вы называете этот метод. Вы бы хотели это назвать чем-то вроде ruby test.rb, если вы находитесь в каталоге с файлом test.rb. Еще один общий совет для того, чтобы попробовать что-то, что не работает, - это пойти в irb в командной строке и попробовать свою программу, например puts "Hello!, чтобы узнать, является ли это именно тот код, который является проблемой.

Смежные вопросы