7
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

どうしたの?どうすればこれを解決できますか?

4

1 に答える 1

10

文字cmd列になんらかの理由でnull(つまりゼロ)バイトが含まれています。を使用putsすると、nullバイトは表示されず、出力から除外されます。

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に入力されているかをチェックして、これらのnullバイトのソースを追跡できるかどうかを確認する必要がありますが、簡単な修正として、gsub!それらを削除するために使用できます。

cmd.gsub!(/\0/, '')
于 2012-08-10T23:02:23.850 に答える