java - 我应该使用 Runtime.exec() 来调用 bash shell 脚本吗?

标签 java shell

我有一些文件需要使用 unix 排序实用程序进行附加和排序。然后我们将使用Java来处理排序后的文件。

最初我想使用 bash shell 脚本来进行排序,在脚本文件的后面部分,我调用 Java 程序。但我担心的是shell脚本没有成熟的日志库,只能重定向输出流和错误流。

如果我想让日志看起来更好,我应该使用 Runtime.exec() 来调用 Java 中的 bash shell 脚本部分,以便我可以记录它们吗?

以下是shell脚本文件:

    cd /home/app/xyz/data

    echo -n "Total number of files: "
    ls | wc -l

    for file in ls ABC_*.DAT
    do
        echo "Appending" $file "..."
        cat $file >> /home/app/xyz/data/unsorted.DAT
        echo "Moving" $file "to back up folder..."
        mv $file /home/app/xyz/data/backup
    done

    sort -t ',' -k 1,1 -k 5,7 -k 2,2r unsorted.DAT -o sorted.DAT

    CALL JAVA_PROGRAM sorted.DAT

最佳答案

恕我直言,如果您想使用 Java,您应该将此脚本逻辑重写为 Java 以提高可移植性。这是一个简短的脚本,所以不会很困难。您可以在这里查看:Optimal way to sort a txt file in Java

但这取决于场景和用例。可以编写具有良好日志记录的脚本;)

关于java - 我应该使用 Runtime.exec() 来调用 bash shell 脚本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6675391/

相关文章:

java - MVP 中的演示者是如何创建的?

java - 在后台运行没有丑陋命令提示框的java文件

linux - Bash 检查环境变量设置在环境变量数组中

bash - 我正在用vim检查手册页,并且有一些奇怪的字符,如何使其正常?

linux - 改变脚本的输出

java - 我可以在java中将Canvas导出为图像吗?

java - 使用 Google Endpoint 了解 JsonMappingException

java - 更改抽屉导航的默认选定项目(Android - Java)

bash - 使用 Bash 显示进度指示器(微调器)

ruby-on-rails - 在 bash 中执行 rake 命令