Tôi đang sử dụng gets
để tạm dừng đầu ra của tập lệnh cho đến khi người dùng nhấn phím enter. Nếu tôi không vượt qua bất kỳ đối số nào để kịch bản của tôi thì nó hoạt động tốt. Tuy nhiên, nếu tôi chuyển bất kỳ đối số nào cho tập lệnh của tôi thì sẽ bị chết với lỗi sau:Tại sao lại bị lỗi khi đối số được chuyển đến tập lệnh ruby của tôi?
ruby main.rb -i
main.rb:74:in `gets': No such file or directory - -i (Errno::ENOENT)
from main.rb:74:in `gets'
...
Thông báo lỗi hiển thị đối số tôi đã chuyển đến tập lệnh. Tại sao sẽ được nhìn vào ARGV?
Tôi đang sử dụng OptionParser để phân tích đối số dòng lệnh của mình. Nếu tôi sử dụng parse!
thay vì parse
(để nó loại bỏ những thứ mà nó phân tách khỏi danh sách đối số) thì ứng dụng hoạt động tốt.
Vì vậy, có vẻ như đang được đọc từ ARGV vì một lý do nào đó. Tại sao? Đây có phải là dự kiến không? Có cách nào để làm cho nó không làm điều đó (làm gets()
không giúp được).