问题描述
执行这个脚本的时候,kee=gets.chomp这行代码没有接受输入,请问是怎么回事?谢谢。
#!/usr/bin/rubyrequire ’crypt/blowfish’unless ARGV[0] puts 'Usage: ruby encrypt.rb <filename.ext>' puts 'Example: ruby encrypt.rb secret.stuff' exitendfilename=ARGV[0].chompputs filenamec='Encrypted_#{filename}'if File.exists?(c) puts 'File already exists.' exitendprint 'Enter your encryption key (1-56 bytes): 'kee=gets.chompbegin blowfish=Crypt::Blowfish.new(kee) blowfish.encrypt_file(filename.to_str,c) puts ’Encryption sucess!’rescue Exception => e puts 'An error occurred during encryption: n #{e}'end
问题解答
回答1:你调用的是Kernel里面的gets方法,这个gets方法会试图去读取ARGV里面的内容,除非AGRV为空,这时才试图读取STDIN的内容。
http://www.ruby-doc.org/core-2.2.0/Kernel.html#method-i-gets
你应该调用的是IO#gets,比如STDIN.gets而不是gets。
http://www.ruby-doc.org/core-2.2.0/IO.html#method-i-gets