gpt4 book ai didi

java - shell脚本if语句从java执行?

转载 作者:行者123 更新时间:2023-12-01 12:42:07 25 4
gpt4 key购买 nike

我正在尝试通过java程序执行unix命令。其中一些命令涉及 if-then-fi 语句。这可以通过 java/Runtime 类来完成吗?看起来它一次只能处理 1 个命令。我想做这样的事情:

grep 'Error One'   SystemErr.log > $HOME/tempFiles/output.txt
grep 'Error Two' SystemErr.log >> $HOME/tempFiles/output.txt
grep 'Error Three' SystemErr.log >> $HOME/tempFiles/output.txt
.
.

if [ -s $HOME/tempFiles/output.txt ]
then
mail -s "Subject here" "a@b.com" < $HOME/tempFiles/output.txt
fi

基本上,如果 grep 发现任何内容,我只想通过电子邮件发送文件(结果)。我想使用java而不是直接的shell脚本,这样我搜索的错误可以是数据库驱动的,更容易更改。

我知道我可以自己用 java 读取该文件并自己搜索/解析它。但是 grep 和其他 unix 命令有很多内置功能,我想使用它来使它更容易。

有什么想法,还是我完全走错了路?

最佳答案

这是一些代码,使用更简单的命令,但基本上等效:

public static void main( String[] args ) throws Exception {
try {
ProcessBuilder pb = new ProcessBuilder( "/bin/bash", "-c",
"echo one >/tmp/xxx && echo two >>/tmp/xxx && " +
"if [ -s /tmp/xxx ]; then cp /tmp/xxx /tmp/yyy; fi" );
File log = new File( "/tmp/log.txt" );
pb.redirectOutput(ProcessBuilder.Redirect.appendTo(log));
Process process = pb.start();
process.waitFor();
} catch( Exception e ){
// ...
} catch( Error e ){
// ...
}
}

诀窍是将其全部放入一个 shell 命令中,以便您可以使用 -c 命令选项调用/bin/bash。

如果编写此命令太复杂,请编写一个 shell 文件并获取该文件。

关于java - shell脚本if语句从java执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25002244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com