2017-03-29 3 views
0

J'utilise C# pour créer des scripts shell pour automatiser mes tâches sous Linux. Pour ce faire, j'utilise ci-dessous la structure:Créer des fichiers de script shell Linux en C# (qui n'a pas besoin de dos2unix)

List<string> batchFileLines = new List<string>(); 
batchFileLines.Add("shell command 1"); 
batchFileLines.Add("shell command 2"); 
System.IO.File.WriteAllLines(shellBatchFileName, batchFileLines.ToArray()); 

Cependant, lorsque je déplace mon fichier à Linux en raison de la différence EOL dans Windows et Linux (which a fixed suggested here for linux), EOL dans le fichier shell doivent être corrigées avec dos2unix commande . Je veux savoir comment je peux manipuler mon fichier en C# afin qu'il ne soit pas nécessaire d'exécuter dos2unix.

Quel serait le moyen de remplacer les nouvelles lignes avec le format Linux avec un minimum d'effort?

+0

Vous pouvez simplement ajouter ascii 10 à la fin de chaque ligne. –

+0

@ rory.ap DOS utilise le retour chariot et le saut de ligne ("\ r \ n") comme fin de ligne, que Unix utilise juste le saut de ligne ("\ n")., Donc je pense que je devrais supprimer '\ r'. – VSB

+0

Copie possible de [Ecriture d'un fichier texte de style Unix en C#] (http://stackoverflow.com/questions/7841761/writing-unix-style-text-file-in-c-sharp) – Max

Répondre

0

En utilisant this answer, je devrais changer

System.IO.File.WriteAllLines(shellBatchFileName, batchFileLines.ToArray()); 

à

System.IO.File.WriteAllText(shellBatchFileName, string.Join("\n", batchFileLines.ToArray())); 

Le fichier de sortie ne nécessite pas plus dos2unix.