我写了一个小函数来提交一个在ksh中超时的命令。如果我使用“ps”,在某些情况下函数返回127! ksh(AIX,88)没有这种行为,但是ksh93(AIX)没有。
#!/usr/bin/ksh93
function mysubmit
{
eval "$@" &
pid=$!
/usr/bin/ps -p $pid
wait $pid
rc=$?
return $rc
}
output="$(mysubmit true)"
echo "RC 1=$?"
mysubmit true
echo "RC 2=$?"
执行:
# ./test2.sh
RC 1=127
PID TTY TIME CMD
RC 2=0
如果我将ksh93更改为ksh,则可以。如果我将“ps -p $ pid”改为“kill -0 $ pid”,它就可以了。如果我删除后台处理(&),它就可以了。在我的情况下,我将“ps -p $ pid”更改为“kill -0 $ pid”,它解决了问题,但我根本不理解RC = 127的行为......!
注意:我真正的“mysubmit”更复杂,我尽可能地简化它以提取行为。
有什么想法吗?