выполнить две команды оболочки в одном выражении exec php - PullRequest
18 голосов
/ 19 августа 2011

Я хочу отобразить все файлы, которые были изменены после указанной даты

команды

touch --date '2011-09-19 /home/  , find /home/

Как я могу выполнить эти две команды в одной инструкции exec. Заранее спасибо

Ответы [ 5 ]

40 голосов
/ 19 августа 2011

Вы можете использовать либо ;, либо && для разделения команд. ; выполняет обе команды безоговорочно. Если первый сбой, второй все еще работает. Использование && делает вторую команду зависимой от первой. Если первая команда завершится неудачно, вторая НЕ запустится.

command1 ; command2     (run both uncondtionally)
command1 && command2     (run command2 only if command1 succeeds)
4 голосов
/ 20 сентября 2011

Вот как я это сделал, одновременно кодируя большие пальцы, а затем FLV видео .. Мне нужно сгенерировать 2 больших пальца из файла AVI.После превью мне нужно конвертировать тот же avi во flv или что угодно.Итак, вот код, который я обычно использовал.

$command_one = "do whatever the script does best";
$command_two = "do whatever the script does second best";
//execute and redirect standard stream ..
@exec($command_one."&& ".$command_two.">/dev/null 1>/dev/null 2>/dev/null &");

Вы также можете запустить массив команд с exec, если хотите:)

foreach($crapatoids as $crap){

$command_name = $crap;
//exec the crap below
@exec ($command_name." >/dev/null 1>/dev/null 2>/dev/null &");
}
2 голосов
/ 19 августа 2011

Точка с запятой позволяет запускать несколько команд в одной строке.

<code><?php
    $output = shell_exec("touch --date '2011-09-19' /home/; find /home/");
    echo "<pre>" . $output . "
";?>
2 голосов
/ 19 августа 2011

Разделите их точкой с запятой (;).Пример:

exec("touch --date '2011-09-19' /home/; find /home/");
1 голос
/ 15 февраля 2019

На самом деле, моя проблема возникла из-за выполнения файла Python в виртуальной среде Python. Как правило, веб-сайт Python инструктирует нас проходить через командные строки: создать виртуальную среду -> активировать ее -> вызвать файл Python (например, python3 yourPyFile.py). Однако, когда я пытался адаптировать эти шаги через вызов php с помощью метода exec(), это не сработало. Наконец, я обнаружил, что вам вообще не нужно активировать env, вам нужно только использовать python, который уже генерируется при создании виртуального env с помощью path/to/virtual/env/bin/python3 yourPyFile.py.

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