Почему в "Powershell" не работает "ruby -e"?

Я только что закончил сборку и установку последней версии Ruby версии 2.0.0-p247 в Windows 8. (Примечание. Я также тестировал с предварительно созданным ************* с теми же результатами)

Попытка выполнить простой пример Hello World из командной строки дает два разных результата в зависимости от того, запущен ли ruby из Powershell или cmd.

Powershell:
.\ruby -e 'puts "Hello, World!"' # -e:1: syntax error, unexpected end-of-input

cmd:
.\ruby -e 'puts "Hello, World!"' # Hello, World!

Любые идеи, почему Ruby не работает в среде Powershell?

Примечание. Windows 8 включает Powershell 3.0 (не тестировался с 1.0 или 2.0)

2 ответа

В cmd.exe символы одиночной кавычки передаются вместе с ruby, тогда как в Powershell они интерпретируются как включающие строковый литерал с одной кавычкой.

Это может работать (синтаксис Powershell для передачи строки со значением 'puts "Hello!"' (Включая одиночные кавычки):

PS> ruby -e "'puts '"Hello!'"'"

Если нет, вы можете опираться на новый PS v3 символ "остановить разбор" --%

PS> ruby -e --% 'puts "Hello!"'


Псевдоним ruby добавляется в командную строку, когда рубин установлен. Я не думаю, что они также добавляют псевдоним для Powershell. Чтобы запустить это, вам нужно будет установить путь к тому, где будет установлен ruby, а затем запустите команду.

Пример:

Cd C:\Ruby193\bin
ruby -e 'puts "Hello, World!"'

licensed under cc by-sa 3.0 with attribution.