Использование вывода php-скрипта в bash-скрипте - PullRequest
0 голосов
/ 23 января 2019

У меня есть рабочий скрипт запуска .bash_profile, например:

if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

PATH=$PATH:$HOME/bin

export PATH

while true;
do
./xxx.php
echo "Program Restarting."
sleep 10
done

Мне нужно отредактировать его так, чтобы в зависимости от того, как завершился скрипт xxx.php (возможно, с использованием exit (1)), скрипт «вырывается» из своего постоянного цикла и фактически выходит из оболочки, в которой он находится (что должно закройте окно «Замазка» на устройстве, которое я использую).

Проблема в том, что я не знаю сценариев оболочки, поэтому я не могу понять синтаксис правильно.

Попытка

if [./xxx.php]; then
        exit
fi

дает мне «-bash: [./xxx.php]: нет такого файла или каталога» (и я получаю то же сообщение об ошибке, если я просто добавляю «xxx.php» или полный путь к «/ home /» пользователь / xxx.php ")

Попытка сохранить возвращенный код в переменной для последующего использования ala

BreakVar = $(./xxx.php)

Просто вызывает зависание окна замазки.

Я пытался прочитать вопросы в

Запуск функции PHP внутри Bash (и сохранение возврата в переменной bash)

или

Как я могу присвоить вывод функции переменной, используя bash?

мне тоже не очень помогает, потому что я не понимаю, как печально работает конкретный синтаксис, поэтому я не могу преобразовать эти ответы в мою конкретную ситуацию.

Примечание. Помимо добавления короткого предложения "exit (1)" в сценарий xxx.php, предположим, что я не могу изменять этот сценарий дальше: (.

1 Ответ

0 голосов
/ 23 января 2019

Статус выхода обычно получается с помощью переменной $ ?. Смотрите здесь . Итак, предполагая, что вы хотите выйти из цикла, когда состояние выхода равно 1, вы пишете

while true;
do
  ./xxx.php
  if [ $? -eq 1 ]
  then
     break
  fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...