您好,我有一个执行某些命令的 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/