`exec’:string包含空字节(ArgumentError)

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 

这是怎么回事? 我怎么解决这个问题?

你的cmd字符串在某种程度上有一个空(即零)字节。 使用puts不会显示任何空字节,它们只会被排除在输出之外:

 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 

您应该检查您的repsvn_userpxs变量是如何填充的,以查看是否可以跟踪这些空字节的来源,但作为快速修复,您可以使用gsub! 删除它们:

 cmd.gsub!(/\0/, '')