使用JRuby在Windows上编写Unix换行符

我正在编写一个Ruby脚本来生成一个Unix shell脚本,但是我无法让JRuby在Windows上编写Unix换行符。

我写了一个文件test.rb ,其中包含:

 File.open("test.sh", 'w') do |f| f.write("#!/bin/sh\n") f.write("echo hello\n") end 

当我用命令java -jar jruby-complete-1.6.5.jar test.rb执行它时,生成的文件包含\r\n换行符而不是\n换行符。

我如何强制JRuby使用Unix换行编写文本文件?

我设法通过添加“b”到File.open的参数来解决它

 File.open("test.sh", 'wb') do |f| f.write("#!/bin/sh\n") f.write("echo hello\n") end 

IO类的文档说明如下:

 Mode | Meaning -----+-------------------------------------------------------- "b" | Binary file mode (may appear with | any of the key letters listed above). | Suppresses EOL <-> CRLF conversion on Windows. And | sets external encoding to ASCII-8BIT unless explicitly | specified. -----+--------------------------------------------------------