2011-11-09 3 views
3

J'écris un script Ruby pour générer un script shell Unix, mais je ne parviens pas à faire écrire par JRuby des sauts de ligne Unix sous Windows.Ecriture de sauts de ligne Unix sous Windows avec JRuby

J'ai écrit un fichier test.rb qui contient:

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

Quand je l'exécute avec la commande java -jar jruby-complete-1.6.5.jar test.rb le fichier généré contient des sauts de ligne \r\n au lieu de \n sauts de ligne. Comment puis-je forcer JRuby à écrire un fichier texte avec newline Unix?

+0

essayé le commentaire magique '# encodage : utf-8-unix' en haut du fichier? – iain

+0

'# encoding: utf-8-unix' n'a pas aidé. –

Répondre

9

j'ai réussi à le corriger en ajoutant « b » aux paramètres de File.open

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

La documentation pour l'IO class dit à ce sujet comme suit:

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. 
-----+-------------------------------------------------------- 
Questions connexes