`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
您应该检查您的rep
, svn_user
和pxs
变量是如何填充的,以查看是否可以跟踪这些空字节的来源,但作为快速修复,您可以使用gsub!
删除它们:
cmd.gsub!(/\0/, '')