Вкратце
У меня есть программа на 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
Почему значение $?
теряется.Зачем мне хранить его в другой переменной?