QT 程序包含带有 if-test-then 块的 bash 脚本以及内部问题错误中转义的必要引号

2024-03-29

我正在尝试在 QT 应用程序中运行一个小型 bash 脚本,其中包含 if-test-then 块以及测试中必要的引号。由于脚本应该由 QT 编译并由 bash 运行,因此引号必须转义两次,因此引号的转义反斜杠也必须转义,正如我所见。不幸的是它没有按预期工作。

这是代码:

#include <stdio.h>

QObject *parent;

int main(int argc, const char* argv[])
{
    QProcess *myProcess = new QProcess(parent);
    myProcess->execute("/bin/bash -c \"x=1 ; echo $x ; if [ \\\"$x\\\" = \\\"1\\\" ] ; then echo itsOne ; fi\"");
}

当我运行编译后的程序时,我得到输出:

    root@debian:~# ./proggy
    1
    /bin/bash: line 0: [: missing `]'

在 bash 终端中尝试相同的脚本时,而不是此处看到的输出:

    root@debian:~# x=1 ; echo $x ; if [ "$x" = "1" ] ; then echo itsOne ; fi
    1
    itsOne

我已经在 QT 程序中尝试了各种转义和引号的组合,但到目前为止没有任何帮助。

有谁知道这里出了什么问题或者如何解决这个谜题?不知何故,测试命令中的转义引号似乎破坏了 bash 看到的脚本。如果测试命令中有两个必要的引号,为什么 bash 看不到右括号?


有几点。

Firstly execute是 QProcess 的静态成员,因此无需创建 QProcess 的实例。

其次,通常更容易使用execute超载 http://doc.qt.io/qt-5/qprocess.html#execute将程序名称与参数列表分开。

考虑到这一点,你想要的可能是......

QProcess::execute("/bin/bash", QStringList() << "-c" << "x=1 ; echo $x ; if [ \\\"$x\\\" = \\\"1\\\" ] ; then echo itsOne ; fi");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT 程序包含带有 if-test-then 块的 bash 脚本以及内部问题错误中转义的必要引号 的相关文章

随机推荐

  • 如何像在 Matlab 中一样在 Java 中绘制绘图(相同语法)

    在 Matlab 中绘图非常简单明了 例如 figure Position 100 80 1000 600 plot x y1 or MarkerSize 0 2 MarkerFaceColor r LineWidth 2 xlabel M
  • 关于“在 DirectShow 之外使用 DirectShow 过滤器?”

    我在以下链接中有完全相同的问题 在 DirectShow 之外使用 DirectShow 过滤器 https stackoverflow com q 3458868 683527我是一名刚开始执导节目的人 该堆栈中的两个答案对我来说还不够清
  • 在登录视图中找到控件

    I have a masterpage with a loginview in the loginview i have an asp login control i also have a label that is NOT contai
  • 通过 pyspark.ml CrossValidator 调整隐式 pyspark.ml ALS 矩阵分解模型的参数

    我正在尝试调整使用隐式数据的 ALS 矩阵分解模型的参数 为此 我尝试使用 pyspark ml tuning CrossValidator 运行参数网格并选择最佳模型 我相信我的问题出在评估器上 但我无法弄清楚 我可以使用回归 RMSE
  • Groovy def 和 Java 对象之间的区别?

    我试图找出两者之间的区别 Groovy def name stephanie Java Object name stephanie 由于两者似乎都充当与它们交互的对象 因此我必须将它们转换为原始的预期类型 我最初是在寻找 C 动态类的 ja
  • 尝试递归地散列对象中的值

    朋友们 我正在尝试编写对 JSON 文件中的所有值进行哈希处理的代码 无论文件结构如何 同时保留键和结构 我是 javascript 新手 遇到了一些麻烦 我的代码对 big 和 baz 的值进行哈希处理 但没有像我希望的那样递归地对 ca
  • 如何检查 iCloud 是否以编程方式配置

    这是苹果文档中的一句话 如果未配置 iCloud 请询问用户是否要配置它 如果要配置 iCloud 最好将他们转移到启动设置 如何检查 iCloud 是否已配置以及如何启动 iCloud 设置 Edit 如果您的目标是 iOS6 或更高版本
  • 在 FTP 上上传多个文件

    我是 Objective C 和 iOS 的新手 我正在使用 SimpleFTPSample 制作用于将文件上传和下载到 ftp 的测试应用程序 我需要在 ftp 上上传两个文件 但在 SimpleFTPSample 中您只能上传一个 那么
  • Silverlight工具包图表线系列颜色选择

    我正在使用 Silverlight 4 工具包并使用图表控件 特别是线系列 我还使用 Microsoft Silverlight 主题之一 它带有一些图表的默认样式 我知道在 ToolkitStyles xaml 中有大量供图表工具包使用的
  • 在Linux中使用命令行检查单个线程优先级

    我可以通过转到 proc pidof task 并给出来查看应用程序中使用的线程数 猫的状态 有没有办法使用命令检查Linux中各个线程的优先级 Regards Learner 运行 ps m l 它将列出所有线程和特定 PID 的优先级
  • Django视图响应时间问题

    您好 我有很多从查询中获得的对象 查询集尚未评估 当我将对象列表传递给分页器对象时 花了 14 秒才返回分页器对象 这是因为它正在评估列表中的所有对象 这需要时间 可能会击中数据库 在将查询集发送到分页器对象之前 我强制评估了查询集 如下所
  • Spring Integration 链流程 - 处理无效网关调用

    我有一个 Spring 集成流程 其中有一个对网关服务的服务激活器调用 该服务的结果无效并且似乎挂起 它不会继续链的其余部分 我是否需要指定其他内容来表明我不希望网关调用返回结果以继续线程执行 我有一个 void 方法声明 Service
  • 查找Python代码中除法运算符的所有用法

    我想找到我的所有实例python除法运算符的代码 用来 我的第一直觉是使用正则表达式 该表达式需要过滤掉非除法的使用 即路径名 我想出的最好的是 A z0 9 A z0 9 这将找到除法运算符 foo bar foo bar foo bar
  • 启动应用程序(如果已安装),或使用安装引荐来源网址打开 Google Play

    我们正在尝试生成一个链接 当在浏览器中单击该链接时 将打开我们的应用程序 如果已安装 这通常是通过以下方式完成的 intent some domain some parameters Intent scheme somescheme pac
  • jQuery 检查元素是否具有 css 属性

    我需要知道当我单击一个元素时该元素是否具有 CSS 属性 我正在考虑这样的事情 但它不起作用 if element attr text shadow alert i Have else alert i dont 关于这一点有什么建议吗 谢谢
  • 如何将 datetime.date 对象转换为 python 中的 datetime.datetime ? [复制]

    这个问题在这里已经有答案了 可能的重复 将 datetime date 对象转换为 datetime datetime 对象 其中任何缺失的时间属性均为零 https stackoverflow com questions 11192814
  • 在多列中显示单选框列表

    我有一个 php 循环 列出了 50 个单选框 我想在每列上放置 10 个单选框 我试过 div 样式 溢出 隐藏 空白 nowrap 浮动 左 宽度 160px gt 生成代码 php j 0 php foreach from genre
  • 如何使用 IHTTPNegotiate 添加额外的 http 标头?

    如何使用 HTTP Negotiate 向请求添加额外的标头 我添加了接口但功能BeginningTransaction OnResponse永远不会被打电话 TNameSpaceHandler class TComObject IInte
  • 如何获取 Amazon 的 AWS_ACCESS_KEY_ID?

    我对 AWS 完全陌生 我从亚马逊下载了一些示例代码 我需要设置一些常量 AWS ACCESS KEY ID AWS SECRET ACCESS KEY MERCHANT ID MARKETPLACE ID 我刚刚创建了一个 AWS 账户
  • QT 程序包含带有 if-test-then 块的 bash 脚本以及内部问题错误中转义的必要引号

    我正在尝试在 QT 应用程序中运行一个小型 bash 脚本 其中包含 if test then 块以及测试中必要的引号 由于脚本应该由 QT 编译并由 bash 运行 因此引号必须转义两次 因此引号的转义反斜杠也必须转义 正如我所见 不幸的