web-dev-qa-db-fra.com

exécuter deux commandes Shell dans une seule instruction php exec

Je souhaite afficher tous les fichiers modifiés après une date spécifiée

les commandes sont

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

Comment je peux exécuter ces deux commandes en une seule instruction exec.Merci à l'avance

21
Warrior

Vous pouvez utiliser soit un ; ou un && pour séparer les commandes. Le ; exécute les deux commandes sans condition. Si le premier échoue, le second fonctionne toujours. En utilisant && fait dépendre la seconde commande de la première. Si la première commande échoue, la seconde ne s'exécutera PAS.

command1 ; command2     (run both uncondtionally)
command1 && command2     (run command2 only if command1 succeeds)
45
Marc B

C'est ainsi que je l'ai fait encoder simultanément les pouces, puis flv video..J'ai besoin de générer 2 pouces à partir du fichier avi. Après les pouces, je dois convertir le même avi en flv ou autre. Voici donc le code que j'utilisais normalement.

$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 &");

Vous pouvez également exécuter un tableau de commandes avec exec, si vous le souhaitez :)

foreach($crapatoids as $crap){

$command_name = $crap;
//exec the crap below
@exec ($command_name." >/dev/null 1>/dev/null 2>/dev/null &");
}
4
PoorBoy

Séparez-les par un point-virgule (;). Exemple:

exec("touch --date '2011-09-19' /home/; find /home/");
2
Rijk

Le séparateur point-virgule vous permet d'exécuter plusieurs commandes sur une seule ligne.

<?php
    $output = Shell_exec("touch --date '2011-09-19' /home/; find /home/");
    echo "<pre>" . $output . "</pre>";
?>
2
JJ.

En fait, mon problème vient de l'exécution python dans un environnement virtuel de Python. Généralement, Python nous demande de passer par les lignes de commande: créer un env virtuel -> l'activer -> appeler Python (par exemple: python3 yourPyFile.py). Cependant, lorsque j'essayais d'adapter ces étapes en appelant en php avec la fonction exec() méthode, cela n'a pas fonctionné. Enfin, j'ai découvert que vous n'avez pas besoin d'activer env du tout, ce que vous avez seulement besoin d'utiliser un python qui a déjà généré lors de la création env virtuel par path/to/virtual/env/bin/python3 yourPyFile.py.

1
Nguyen Tan Dat