运行 git bash 中的 .sh 脚本来自 Windows 中的 Qt App

Running .sh scripts in git bash from Qt App in Windows

我在 Windows 上有一个 Qt 应用程序,我想 运行 一个脚本 .sh,当我按下一个按钮并将输出保存到 plainTextEdit 时。

这是我的代码:

void MainWindow::on_pushButtonSTART_clicked()
{
  QProcess* process = new QProcess(this);
    connect(process, &QProcess::readyReadStandardOutput, [=] {
        ui->plainTextEditResults->setPlainText(process->readAllStandardOutput());
    });
    process->start("git-bash.exe", QStringList{QString("./"),"path/script1.sh"});

    //ui->plainTextEditResults->setPlainText(QString::number(process->exitCode()));
}

脚本:(我尝试使用#!/bin/bash,结果相同)

#!/bin/sh

echo "Hello World!"

问题是我的脚本没有 运行(我试过了,没有效果:

#!/bin/sh

echo "Hello World!" >> test.json)

但是 exitCode() 为 0。 一些帮助?我想要 运行 git-bash 或 cmd 中的脚本,如果可能的话。

git-bash.exe在你的路上吗?

否则您必须指定可执行文件的完整路径; C:\Program Files\Git\git-bash.exe.

我已经解决了,状态码为0(正常输出)并且没有window开闭很快。
我第一次 运行 命令,在命令中我调用 bash 然后在 bash 我的脚本

QProcess* process = new QProcess(this);
connect(process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
            [=](int exitCode, QProcess::ExitStatus exitStatus){
        ui->plainTextEditResults->appendPlainText(QString("exitStatus:") + QString::number(exitStatus));
        ui->plainTextEditResults->appendPlainText(QString("exitStatus normal:") + QString::number(QProcess::NormalExit));
        ui->plainTextEditResults->appendPlainText(QString("exitStatus crash:") + QString::number(QProcess::CrashExit));
        ui->plainTextEditResults->appendPlainText(QString("exitCode:") +QString::number(exitCode));
    });
processArgs+="/c \"\"C:\Program Files\Git\bin\bash.exe\" --login -i -- \"D:/path/script1.sh\"\"";
    process->setNativeArguments(processArgs);
    process->start("cmd.exe");