2012-08-10 25 views
7
cmd = "snv co #{rep} --username #{svn_user} --password #{pxs}" 

puts cmd # this code wotks and prints all vars values normally 

exec(cmd) 
xpto.rb:69:in `exec': string contains null byte (ArgumentError) 
    from xpto.rb:69 
$ ruby -v 
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux] 
$ gem -v 
1.3.7 

Whats đang xảy ra? Làm sao tôi có thể giải quyết việc này?'exec': string chứa byte null (ArgumentError)

Trả lời

10

Chuỗi cmd của bạn đã có một byte rỗng (tức là 0) trong đó bằng cách nào đó. Sử dụng puts sẽ không hiển thị bất kỳ byte null, họ sẽ chỉ được gạt ra khỏi đầu ra:

1.8.7 :001 > exec "\0" 
ArgumentError: string contains null byte 
     from (irb):1:in `exec' 
     from (irb):1 
1.8.7 :002 > puts "n\0n" 
nn 
=> nil 

Bạn có lẽ nên kiểm tra như thế nào bạn rep, svn_userpxs biến đang được dân cư để xem nếu bạn có thể theo dõi xuống nguồn của các byte rỗng này, nhưng dưới dạng sửa chữa nhanh, bạn có thể sử dụng gsub! để xóa chúng:

cmd.gsub!(/\0/, '') 
Các vấn đề liên quan