Как отозвать статус процесса из PHP-скрипта, Java-программы в вызывающую оболочку bash - PullRequest
0 голосов
/ 02 февраля 2011

Вкратце
У меня есть программа на PHP и Java, одна из которых вызывается из моей оболочки в зависимости от условия.Эти две программы в основном представляют собой два пути для одной и той же задачи - один путь берется для одного формата файла, а другой - для другого.Я хочу, чтобы эти два пути возвращали состояние (успех или сбой), а затем оболочка для чтения обратного вызова и выполнения некоторой общей логики соответственно.

Описание
Это представление-

         |
         |
         \/
     Shell logic
         |
         |
   ______________
   |  check a   |
   |  condition |
   ______________
   |            |
  /\           / \
 /  \         /   \
 |Yes|        |No |
 \  /         \  /
  \/           \/
   |           |
   |           |
   \/          \/
run PHP      run Java 
script        program
   |            |
   |            |
   \/           \/
 callback   callback  
 status      status
   |           |
   \/          \/
 ------------------
 | Detect callback |
 | status in shell |
 -------------------
         |
         |
         \/
    Do something

Я вызываю эти программы следующим образом -

php $dbx_parser_script_path/cli_complete_dbx_parser.php input_dbx_file=$input_file package_root=$package_root

и

java -classpath $package_root/some/jar/file:$package_root/examples/MessagesAndAttachments/src/ Example $input_file $package_root

Итак, две вещи -

  • Как мне перезвонить из PHP и Java программ.
  • Как прочитать обратный вызов в оболочке?

Обратите внимание, что обе программы отображают некоторые сообщения во время работы.Таким образом, какое-то чтение печатной продукции не может быть чистым решением.Если есть какой-то правильный способ чтения возвращаемого значения исполняемой программы в оболочке, и оба этих языка - Java и PHP, могут вернуть какое-то значение скрипту вызывающей программы, то это то, что я ищу.

Спасибо

Обновление

Исправлено, но эта странная вещь с $?

//after php script execution command - my php script ends with exit(1)
temp=$?
echo "See "$?" "$temp 
echo "with ?"   
if [ $? -eq 1 ]; then
    echo "success"$?
else
    echo "failure"$?
fi

echo "with temp"    
if [ $temp -eq 1 ]; then
    echo "success"$temp 
else
    echo "failure"$temp     
fi

Вывод -

See 0 1
with ?
failure1
with temp
success1

Почему значение $? теряется.Зачем мне хранить его в другой переменной?

1 Ответ

2 голосов
/ 02 февраля 2011

В вашей java-программе вы можете вернуть статус выхода следующим образом:

//return exit status of 1
System.exit(1);

Аналогично, в PHP:

//exit with an error code of 1
exit(1);

В вашем скрипте оболочки вы можете проверить выходстатус последней команды, выполненной с использованием $?

Пример:

#run java command
java Main args

#the exit status of the previous command is in `$?`. So check it:
if [ $? -eq 1 ]
then
    # do something
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...