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/, '')
关于ruby - `exec' : string contains null byte (ArgumentError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910040/