通过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上运行时卡住了

快速为不同 Git 平台配置用户

Python 3 不会从 Git Bash 命令行运行 [重复]

在 Java 中使用 ProcessBuilder 读取输出 git-bash

使用git bash here上传代码到GitHub

如何用git bash把代码传到git上?