2011-11-09 4 views
3

Rubyスクリプトを書いてUnixシェルスクリプトを生成していますが、WindowsでUnixの改行を書き込むことができません。WindowsでJRubyでUnixの改行を書く

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改行を壊し含まれています

私が含まれているファイルtest.rbを書かれています。

JRubyにUnix改行を含むテキストファイルを強制的に書き込ませるにはどうすればよいですか?私はIO classためFile.open

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

のパラメータにドキュメントを「b」を追加することによって、それを修正するために管理

+0

は魔法のコメント '#エンコーディングを試してみました:utf-8-unix'ファイルの先頭に? – iain

+0

'#encoding:utf-8-unix'は役に立たなかった。 –

答えて

9

はそれについて次のように述べている:

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. 
-----+-------------------------------------------------------- 
関連する問題