linux - 当我在 Qt 中通过 QProcess 调用脚本时,很少有 shell 命令不起作用

标签 linux qt

您好,我有一个执行某些命令的 shell 脚本,当我使用终端调用该脚本时,它工作正常,但是当我使用 QProess 调用脚本时,很少有命令不能正常工作。

这是脚本

#!/bin/bash

echo "Invoking the script"
euid=$1
if [ $# -ne 1 ]; then
echo "Arguments missing"
      exit 1
fi

echo "arg 1: $1"
data=$1;
name=$(echo $data | cut -b 1-7)
age= $(echo $data | cut -b  10-11)
echo "$name"
echo "$age"

这是我使用QProcess的方式

// Environment setup
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
candidateProcess->setProcessEnvironment(env);
QString script("/home/root/scripts/getInfo.sh");
candidateProcess->start("/bin/bash", QStringList() << script << qwertyuand21");

如果我在 shell 中运行这个脚本它工作正常,获取 name 和 age 的值。但是当我使用上述方法从 Qt 调用脚本时,我得到了 cut 命令的错误,前 3 个 echo 运行良好,然后我得到了 cut 命令的错误 cut : command not found 然后什么都没有因为 cut 命令失败,出现了 echo 命令。 这是什么原因?我已经为进程提供了 shell,但仍然出现这些错误??

最佳答案

你可以尝试使用 sh 命令和一些测试参数

QString script("/home/root/scripts/getInfo.sh arguments123456");
Process->start("/bin/sh ", QStringList() << script");

关于linux - 当我在 Qt 中通过 QProcess 调用脚本时,很少有 shell 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44064474/

相关文章:

python - 类型错误 : range() integer end argument expected, 已获取 int

c++ - 在 Qt Creator 中使用 'Analyze Memory' 工具

linux - zbus 连接未显示在busctl 列表中

android - 为 android 构建 valgrind 时未定义 __ANDROID__

linux - 如何重命名没有日期和时间的文件

c++ - 多线程 UI 的最佳方式?

c++ - Qt 中奇怪的光标行为

linux - 如何让我的程序在保持响应的同时长时间休眠?

c++ - 在 Linux 中使用 C/C++ 获取机器序列号和 CPU ID

c++ - QTabWidget 我想隐藏子标签