ruby - `exec' : string contains null byte (ArgumentError)

标签 ruby string arguments cmd exec

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

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

相关文章:

ruby - 是否可以在不污染全局范围的情况下将模块包含在 rake 任务中?

ruby-on-rails - 将 erb 从数据库渲染到 View 问题请帮助!

C 在 execvp 中传递一个参数和两个参数

python - 在 Python 中通过三元运算符传递函数参数

ruby - 将 txt 文件从定义的位置扫描到定义的位置

ruby-on-rails - 将 ruby​​ 哈希转换为 json 对象

c# - 如何将给定字符串中的所有字符实例加倍。使用 C#

string - 将字符串转换为 int8 数组

Javascript 函数参数输入为 0 而不是 1

接受 numpy ndarray 或序列作为参数的 Python 函数