首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该使用Runtime.exec()来调用bash shell脚本吗?

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

Stack Overflow用户
提问于 2011-07-13 15:17:48
回答 3查看 286关注 0票数 0

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

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

如果我想让日志看起来更漂亮,我是否应该使用Runtime.exec()来调用Java中的bash shell脚本部分,这样我就可以记录它们了?

以下是shell脚本文件:

代码语言:javascript
复制
    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
EN

回答 3

Stack Overflow用户

发布于 2011-07-13 15:31:09

如果你想使用Java,你应该把这个脚本逻辑重写成Java,以提高可移植性。这是一个简短的脚本,所以不会很难。你可以在这里找到:Optimal way to sort a txt file in Java

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

票数 2
EN

Stack Overflow用户

发布于 2011-07-13 15:30:32

我不认为“更好的日志记录”是从java执行shell脚本的原因。java进程只需要将要处理的文件的名称作为参数。如果可能的话,可以直接在终端上进行针刺处理。这样,你的java程序也是可移植的。但需要了解整个用例才能做出正确的决策。

票数 0
EN

Stack Overflow用户

发布于 2011-07-13 16:00:31

shell脚本简单地将当前目录中的所有ABC_*.DAT文件连接到一个文件/home/app/xyz/data/unsorted.DAT中,然后将/home/app/xyz/data/unsorted.DAT中的内容排序到sorted.DAT中。最后,脚本将调用一个Java程序来处理sorted.DAT

您可以从Java进行文件读取、连接和排序。如果您需要一些帮助器类来处理目录中的文件等,那么我建议使用Apache Fileutils。因此,如果我建议探索放弃shell脚本的可能性,那么将所有处理合并到一个Java程序中,并在这种(显然)简单的情况下避免使用Runtime.exec()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6675391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档