2014-06-25 153 views
1

我寫了一個使用Java的shell腳本(test.sh)。這個shell腳本實際上是從一個文件到另一個文件執行復製作業。在執行shell腳本後,我打開了控制檯的目錄並鍵入ls。它顯示輸出文件與?擴展後的Unix:「ls」命令顯示文件?擴展

例如:foo.csv?

File execFile = new File(file); 
    FileWriter fwFile; 
    try { 
     fwFile = new FileWriter(execFile); 
     execFile.setExecutable(true); 
     BufferedWriter bwFile = new BufferedWriter(fwFile); 
     bwFile.write(strOutput.substring(0, 2)); 
     bwFile.write("\r\n"); 
     bwFile.write("cd " + strOutput); 
     bwFile.write("\r\n"); 
     bwFile.write("mkdir " + strOutput); 
     bwFile.write("\r\n"); 
     bwFile.write(strUnixPath); 
     bwFile.write("\r\n"); 
     bwFile.write("cd " + strWorkingPath + IPlatinumConstants.FS+"lib"+IPlatinumConstants.FS+"Unx"); 
     bwFile.write("\r\n"); 
     bwFile.write("echo Cut Src Start time %time%"); 
     bwFile.write("\r\n"); 

       bwFile.write("cp " + " \"" + strSourceFilePath + "\" \"" 
         + strOutput + "copy_A\""); 
       bwFile.write("\r\n"); 

我的猜測是,雖然使用Java創建shell腳本,有什麼需要照顧的

+1

某些文本編輯器可能會保存這樣的備份和臨時文件。這與編程有什麼關係? –

+1

考慮發佈生成和執行shell腳本的代碼以及生成的shell腳本的示例 – MadProgrammer

+0

OP可能在Windows中保存了該文件,現在它已經有了Windows文件結尾。使用像dos2unix這樣的工具來轉換腳本。 –

回答

0
bwFile.write("\r\n"); 

Unix行結尾

bwFile.write("\n"); 

或將更換這些線路正確的行分隔符

System.setProperty("line.separator", "\n"); 
bwFile.newLine() 
+1

非常感謝你的回答.... – user3611574