Я предполагаю, что вы пытаетесь запустить его, как только 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.
Работает для меня. Тот же код. Я запускаю его с помощью ''./Test.rb'' –