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

时间:2017-05-19 07:52:57

标签: 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然后没有出现echo命令,因为切断命令失败。 这是什么原因?我为进程提供了shell但仍然存在这些错误??

1 个答案:

答案 0 :(得分:0)

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

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