У меня есть следующая команда:
ruby SaveAllDatabases.rb 192.168.0.15 1024 -r #0-D --non-interactive
Это довольно простая команда, в которой я запускаю скрипт ruby с некоторыми аргументами командной строки. Аргумент -r
является регулярным выражением (# 0-D).
Если я запускаю эту команду в Windows (используя стандартную командную строку Windows), все работает так, как ожидается, но если я пытаюсь запустить ту же команду в Linux (с той же версией ruby). Я получаю следующую ошибку:
/usr/lib/ruby/1.8/optparse.rb:451:in `parse': missing argument: -r (OptionParser::MissingArgument)
from /usr/lib/ruby/1.8/optparse.rb:1295:in `parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1254:in `catch'
from /usr/lib/ruby/1.8/optparse.rb:1254:in `parse_in_order'
from /usr/lib/ruby/1.8/optparse.rb:1248:in `order!'
from /usr/lib/ruby/1.8/optparse.rb:1339:in `permute!'
from /usr/lib/ruby/1.8/optparse.rb:1360:in `parse!'
from SaveAllDatabases.rb:256
Если я уберу символ хеша / фунта (#) из регулярного выражения, команда выполнится нормально. Я сделал тест, и командная строка, кажется, ничего не передает после # в массив argv.
Почему это так и как я могу обойти это?