執行這個腳本的時候,kee=gets.chomp
這行代碼沒有接受輸入,請問是怎麼回事?謝謝。
#!/usr/bin/ruby
require 'crypt/blowfish'
unless ARGV[0]
puts "Usage: ruby encrypt.rb <filename.ext>"
puts "Example: ruby encrypt.rb secret.stuff"
exit
end
filename=ARGV[0].chomp
puts filename
c="Encrypted_#{filename}"
if File.exists?(c)
puts "File already exists."
exit
end
print "Enter your encryption key (1-56 bytes): "
kee=gets.chomp
begin
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
你呼叫的是Kernel裡面的gets方法,這個gets方法會試著去讀取ARGV裡面的內容,除非AGRV為空,這時才試著讀取STDIN的內容。
你應該呼叫的是IO#gets,例如
STDIN.gets
而不是gets
。