从bash脚本中发送到后台的进程中检索退出代码

时间:2015-12-27 12:58:22

标签: linux bash scripting exit-code

我有一个小的bash脚本,它从终端获取一些输入,启动浏览器并在浏览器中对网站运行查询。当它在没有显示服务器的系统上运行时,浏览器当然无法启动,我想在脚本中检测它。但是,我在从此行检索退出代码时遇到问题 - firefox http://www.411.com/name/$fname'-'$lname &> /dev/null &。我在SO上看到过类似的问题,但我无法找到解决方案,因为它适用于我。

#!/bin/bash
clear
echo
echo
while [ -z $fname ]; do
   echo -n "First Name: "
   read fname
done
echo
echo -n "Last Name: "
read lname
echo -n "Starting recon on $fname $lname. "
read -p "Press <enter> to continue..."

echo -n "Launching Firefox ...Please wait..."
firefox http://www.411.com/name/$fname'-'$lname &> /dev/null &
status=$?
if [ $status -eq 0 ]; then
   echo "Done"
fi

1 个答案:

答案 0 :(得分:1)

发送到后台的进程在此时不会返回退出代码(它可能仍在运行)。

您无法从尚未完成的流程中获取退出代码。 (您可以wait <pid>从后台进程获取返回代码。)

如果您正在尝试测试X服务器,请尝试检查正在设置的$DISPLAY和/或尝试运行其他一些短期X程序,您可以以正常方式测试返回代码。< / p>