2012-08-10 6 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 

co się dzieje? Jak mogę to rozwiązać?`exec ': ciąg zawiera bajt zerowy (ArgumentError)

Odpowiedz

10

Twój ciąg znaków cmd ma jakikolwiek bajt zerowy (to znaczy zero). Korzystanie puts nie pojawią się jakieś bajty zerowe, będą po prostu pozostawić na wyjściu:

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 

Powinieneś raczej sprawdzić, jak twoi rep, svn_user i pxs zmienne są wypełniane, aby sprawdzić, czy można śledzić w dół źródła tych zerowych bajtów, ale jako szybką naprawę możesz użyć gsub!, aby je usunąć:

cmd.gsub!(/\0/, '') 
Powiązane problemy