Bash命令替换冻结

Bash命令替换冻结,bash,qt,freeze,command-substitution,Bash,Qt,Freeze,Command Substitution,目前我在bash脚本冻结时遇到了以下情况 PID=`cat test.pid` 分析后发现,即使是这个命令也会冻结 TEST=$(echo 1) TEST=`echo 1` 使用bash脚本中的set-x,我可以看到以下输出 + echo 1 1 ++ echo 1 剧本 #!/bin/bash set -x echo 1 TEST=$(echo 1) set +x 这个脚本是从Qt进程调用的,最近一切都正常。 当我从bash手动调用这个脚本时,它也可以工作,但当我从进程中调用它时,它会

目前我在bash脚本冻结时遇到了以下情况

PID=`cat test.pid`
分析后发现,即使是这个命令也会冻结

TEST=$(echo 1)
TEST=`echo 1`
使用bash脚本中的set-x,我可以看到以下输出

+ echo 1
1
++ echo 1
剧本

#!/bin/bash
set -x
echo 1
TEST=$(echo 1)
set +x
这个脚本是从Qt进程调用的,最近一切都正常。 当我从bash手动调用这个脚本时,它也可以工作,但当我从进程中调用它时,它会失败。 目前我正在寻找这种冻结的可能原因,我没有更多的想法。
当我打印出它们匹配的环境时,我也不能在里面打印,因为它也会冻结

你能从你的Qt程序中发布调用代码吗?这有点困难,会有很多代码。Qt代码并没有改变,它在前一周才开始工作,现在甚至可以在另一台linux服务器上工作。简而言之,正是
QProcess
设置了工作目录、环境、绑定stdout/stderr并调用
start(m_str,QIODevice::ReadOnly)
。我想知道的是,您是从Qt调用bash还是传递bash字符串。@jbh,我传递
m_str=trUtf8(“./script.sh”)
您是否已使此脚本可执行(chmod+x script.sh)?您还可以查看流程错误状态和errorString,以帮助您调试此案例