2015-12-27 4 views
0

У меня есть небольшой скрипт bash, который принимает пару входов от терминала, запускает браузер и запускает запрос к веб-сайту в браузере. Когда он запускается в системе без сервера отображения, браузер, конечно, не запускается, и я хочу обнаружить его в скрипте. Однако у меня возникают проблемы с получением кода выхода из этой строки - firefox http://www.411.com/name/$fname'-'$lname &> /dev/null &. Я видел похожие вопросы здесь, на SO, но не могу понять решение, поскольку оно применимо ко мне.Получение кода выхода из процесса, отправленного в фоновый режим в сценарии bash

#!/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 
+0

Удалить '&', чтобы получить код выхода firefox в '$?'. – Cyrus

+0

'Запуск Firefox ... Пожалуйста, подождите ... (процесс: 28086): GLib-ВАЖНЫЙ **: g_slice_set_config: утверждение 'sys_page_size == 0' не удалось Ошибка: отображение не указано ./example2.sh: линия 19: [: -eq: ожидаемый операционный оператор ' – user1720897

ответ

1

Процесс, который отправляется на задний план, не возвращает код выхода в этой точке (он все еще может работать).

Вы не можете получить код выхода из процесса, который еще не завершен. (Вы можете wait <pid> получить код возврата из фонового процесса.)

Если вы пытаетесь протестировать X-сервер, попробуйте установить $DISPLAY, чтобы установить и/или попробовать запустить другую недолгосрочную программу X, которую вы может нормально проверить код возврата.

 Смежные вопросы

  • Нет связанных вопросов^_^