gpt4 book ai didi

java - 无法从java中的shell脚本命令获取输出

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:32 25 4
gpt4 key购买 nike

我正在使用 ProcessBuilder 在 java 程序中运行 shell 脚本命令,这是我的代码:

String lastLine = "";

ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", "echo $(ps -eo pid,args | grep -v grep | grep -v \"$$"\ | grep feature_service.sh | awk '{print $1}')");

BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));

String line;
while ((line = reader.readLine()) != null) {
lastLine = line;
}

由此输出:空字符串 ("")

但是如果我在终端上运行相同的命令它工作正常(进程的 pid)。

请帮帮我。

最佳答案

以下简化的 Shell 命令正在运行。

ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", 
"-c",
"ps -eo pid,args|grep [f]eature_service.sh|awk '{print $1}'|tr '\\n' ' '");
  • ps -eo pid,args - 列出进程 ID 和参数
  • grep [f]eature_service.sh - 对参数中的字符串 feature_service.sh 进行 grep,[f] 避免重复grep 在链中的使用
  • awk '{print $1}' - 打印输出的第一列,使用默认的空白字符作为分隔符
  • tr '\n' ' ' - 用空格字符替换输出中的所有换行符

关于java - 无法从java中的shell脚本命令获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169224/

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