如何在Expect Shell脚本中获取生成的进程的退出代码?
我试图执行一个脚本,该脚本执行一个EXPECT脚本和一个生成的进程,其中包含退出代码。但是我无法将生成的进程的退出代码获取到主脚本。作为成功,我总是零。
期望脚本是:
[Linux Dev:anr ]$ cat testexit.sh #!/bin/bash
export tmp_script_file="/home/anr/tmp_script_temp.sh"
cp /home/anr/tmp_script $tmp_script_file
chmod a+x $tmp_script_file
cat $tmp_script_file
expect << 'EOF'
set timeout -1
spawn $env(tmp_script_file)
expect {
"INVALID " { exit 4 }
timeout { exit 4 }
}
EOF
echo "spawned process status" $?
rm -f $tmp_script_file
echo "done"
产生的脚本:
[Linux Dev:anr ]$ cat tmp_script exit 3
执行Expect脚本:
[Linux Dev:anr ]$ ./testexit.sh exit 3
spawn /home/anr/tmp_script_temp.sh
spawned process status 0
done
问题是我无法获得生成的退出返回代码以期望脚本。我希望生成脚本的退出代码3到主脚本,并且主脚本应该以退出代码3退出。
请帮助我将生成的退出代码获取到主脚本。
回答:
在格伦的帮助下,我得到了解决方案..我的最终脚本是::
期望脚本是
[Linux Dev:anr ]$ cat testexit.sh #!/bin/bash
export tmp_script_file="/home/anr/tmp_script_temp.sh"
cp /home/anr/tmp_script $tmp_script_file
chmod a+x $tmp_script_file
cat $tmp_script_file
expect << 'EOF'
set timeout -1
spawn $env(tmp_script_file)
expect {
"INVALID " { exit 4 }
timeout { exit 4 }
eof
}
foreach {pid spawnid os_error_flag value} [wait] break
if {$os_error_flag == 0} {
puts "exit status: $value"
exit $value
} else {
puts "errno: $value"
exit $value
}
EOF
echo "spawned process status" $?
rm -f $tmp_script_file
echo "done"
产生的脚本:
[Linux Dev:anr ]$ cat tmp_script exit 3
执行Expect脚本:
[Linux Dev:anr ]$ ./testexit.sh exit 3
spawn /home/anr/tmp_script_temp.sh
exit status: 3
spawned process status 3
done
再次感谢格伦..
以上是 如何在Expect Shell脚本中获取生成的进程的退出代码? 的全部内容, 来源链接: utcz.com/qa/422976.html