通过java代码在git bash中输入一系列命令
Posted
技术标签:
【中文标题】通过java代码在git bash中输入一系列命令【英文标题】:Entering a series of commands in git bash through java code 【发布时间】:2020-12-11 17:43:41 【问题描述】:我试图在 git bash 上一个接一个地获取一系列命令。我可以通过代码打开终端,但之后输入任何内容都没有成功。例如这是我尝试过的代码
String [] args = new String[] "C:\\Program Files\\Git\\git-bash.exe";
String something="hi how are you doing";
try
ProcessBuilder p = new ProcessBuilder();
var proc = p.command(args).start();
var w = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
w.write(something);
catch (IOException ioException)
System.out.println(ioException);
请告知如何通过代码将一系列命令输入到 git bash 中。
【问题讨论】:
你实际上需要做什么? 想在终端打开后输入一系列命令。我正在考虑使用一些按钮制作一个基本的 UI 界面,其中当我单击一个按钮时,终端中会执行一些操作。我在终端中输入这样的命令 - export REGISTRY_IP=$(kubectl get service eclipse-hono-service-device-registry-ext --output="jsonpath=.status.loadBalancer.ingress[0]['hostname', 'ip']" -n hono) export HTTP_ADAPTER_IP=$(kubectl get service eclipse-hono-adapter-http-vertx --output="jsonpath=.status.loadBalancer.ingress[0]['hostname',' ip']" -n 荣誉) 进行此类导出的正常位置是在 bash 配置文件中。确定不适合你? 【参考方案1】:问题是命令git-bash.exe
打开终端窗口,但窗口的输入仍然是键盘,所以尝试写入getOutputStream()
方法返回的OutputStream
,在类Process
中什么也不做.参考this问题。
作为替代方案,我建议使用ProcessBuilder
来执行一系列单独的git
命令。当你这样做时,你的 java 代码会得到命令输出。
这是一个显示git
版本的简单示例。
import java.io.IOException;
public class ProcBldT4
public static void main(String[] args)
// C:\Program Files\Git\git-bash.exe
// C:\Program Files\Git\cmd\git.exe
ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\Git\\cmd\\git.exe", "--version");
pb.inheritIO();
try
Process proc = pb.start();
int exitStatus = proc.waitFor();
System.out.println(exitStatus);
catch (IOException | InterruptedException x)
x.printStackTrace();
当您运行上述代码时,git
版本详细信息将写入System.out
。
另外,如果git
命令失败,错误详细信息将写入System.err
。
您需要为需要发出的每个单独的 git
命令重复上述代码。
【讨论】:
以上是关于通过java代码在git bash中输入一系列命令的主要内容,如果未能解决你的问题,请参考以下文章
Java源代码中带有vimdiff命令的Shell脚本在Git bash上运行时卡住了
Python 3 不会从 Git Bash 命令行运行 [重复]