【问题标题】:`exec': string contains null byte (ArgumentError)`exec':字符串包含空字节(ArgumentError)
【发布时间】:2012-08-08 06:00:12
【问题描述】:
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

怎么了?我该如何解决这个问题?

【问题讨论】:

    标签: ruby string arguments cmd exec


    【解决方案1】:

    您的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/, '')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      相关资源
      最近更新 更多