Как проверить готовую оболочку bash в php - PullRequest
1 голос
/ 03 апреля 2019

У меня проблемы с обработкой bash shell в php.Моя проблема, как показано ниже.У меня есть 3 задачи, соответствующие 3 файлам оболочки bash (task1.sh, task2.sh, task3.sh).Когда task1.sh заканчивает обработку, task2.sh автоматически запускается, когда task2.sh завершает обработку, автоматически выполняется task3.sh.

Изначально я написал файл с именем task.sh и внедренный task1.sh,task2.sh, task3.sh в него.Но я хочу встроить эти 3 задачи в файл php.

Например: я создаю файл task.php и выполняю следующие действия:

  • Если файл task1.sh завершается неудачно, он будет отображатьсявсплывающее сообщение (предупреждение) об ошибке.
  • Если обработка task1.sh завершена, то task2.sh продолжит выполняться автоматически.
  • Обработка task2.sh и task3.sh аналогичнавыше.

Все 3 задачи, которые я хочу запустить в backgroud.Проблема в том, что когда я запускаю фоновую оболочку bash, я не смогу проверить ошибочную формулировку ошибки (результат всегда возвращается к 0).

Я многому научился и сверился со многими документами, но он это сделалне помогите мне.

Я надеюсь, что вы можете поддержать меня.

Извините, мой английский очень плохой.

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Вы можете использовать $retval аргумент exec().

<?php

exec('task1.sh', $output, $retval);
if ($retval !== 0) {
  // task 1 failed
  exit('Error running task1: ' . implode("<br/>\n", $output));
}

exec('task2.sh', $output, $retval);
if ($retval !== 0) {
  // task 2 failed
  exit('Error running task1: ' . implode("<br/>\n", $output));
}

exec('task3.sh', $output, $retval);
if ($retval !== 0) {
  // task 3 failed
  exit('Error running task1: ' . implode("<br/>\n", $output));
}

0 голосов
/ 03 апреля 2019

Вы можете просто использовать функцию:

exec ( string $command [, array &$output [, int &$return_var ]] ) : string

С:

выход : Если указан выходной аргумент, указанный массив будет заполнен каждой строкой вывода команды. Конечные пробелы, такие как \ n, не включены в этот массив. Обратите внимание, что если массив уже содержит некоторые элементы, exec () добавится в конец массива. Если вы не хотите, чтобы функция добавляла элементы, вызовите unset () для массива перед передачей его в exec ().

return_var : Если аргумент return_var присутствует вместе с выходным аргументом, то в эту переменную будет записан статус возврата выполненной команды.

Таким образом, вы можете использовать $ output и $ result_var для проверки ошибок выполнения ваших оболочек.

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...