【发布时间】:2014-05-12 16:18:32
【问题描述】:
我正在尝试执行一个脚本,该脚本执行一个 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 退出。
请帮助我将生成的退出代码获取到主脚本。
【问题讨论】:
-
尝试将期望部分放在单独的文件中,即可执行期望脚本,然后尝试获取退出状态。
-
@Jord,我只需要在 shell 脚本中编写期望方法。它不应该是单独的可执行文件。
-
我从link 得到了一些答案,但无法将该解决方案整合到我的代码中。我是期望方法的新蜜蜂。
标签: linux bash shell unix expect