Java Unix:“;ls";命令显示带有?延期后

Java Unix:“;ls";命令显示带有?延期后,java,shell,unix,ls,filewriter,Java,Shell,Unix,Ls,Filewriter,我已经用Java编写了一个shell脚本(test.sh)。这个shell脚本实际上执行从一个文件到另一个文件的复制任务。在执行shell脚本之后,我从控制台打开了目录并键入了ls。它显示扩展名后带有?的输出文件 示例:foo.csv File execFile = new File(file); FileWriter fwFile; try { fwFile = new FileWriter(execFile); execFile.setExec

我已经用Java编写了一个shell脚本(test.sh)。这个shell脚本实际上执行从一个文件到另一个文件的复制任务。在执行shell脚本之后,我从控制台打开了目录并键入了
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脚本时,需要注意一些事情

bwFile.write("\r\n");
用UNIX行结尾替换这些行

bwFile.write("\n");
或设置适当的线路分隔符

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

一些文本编辑器可能会保存备份文件和临时文件。这与编程有什么关系?考虑张贴生成和执行shell脚本的代码和生成的shell脚本的例子,OP可能将文件保存在Windows中,现在它有Windows文件结尾。使用dos2unix之类的实用程序转换脚本。您几乎是对的。。它与Windows文件结尾有关。。但是,我正在尝试仅在unix环境中创建文件从\r\n中删除,它应该可以工作。