web-dev-qa-db-ja.com

1つのexec phpステートメントで2つのシェルコマンドを実行する

指定した日付以降に変更されたすべてのファイルを表示したい

コマンドは

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

この2つのコマンドを単一のexecステートメントで実行するにはどうすればよいですか?

21
Warrior

;または&&を使用して、コマンドを分離できます。 ;は、両方のコマンドを無条件に実行します。最初の1つが失敗した場合でも、2つ目は実行されます。 &&を使用すると、2番目のコマンドが最初のコマンドに依存します。最初のコマンドが失敗すると、2番目のコマンドは実行されません。

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

これは、親指を同時にエンコードし、次にflvビデオを作成した方法です。aviファイルから2つの親指を生成する必要があります。親指の後、同じ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 &");
}
4
PoorBoy

セミコロン(;)で区切ります。例:

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

セミコロン区切り文字を使用すると、1行で複数のコマンドを実行できます。

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

実際、私の問題は、Pythonの仮想環境での実行pythonファイルです。通常、Python Webサイトは、コマンドラインを実行するように指示しています:仮想環境を作成します->有効化->呼び出しPythonファイル(例:python3 yourPyFile.py)。ただし、exec()メソッド、それは機能しませんでした。最後に、envをアクティブ化する必要がないこと、つまり、仮想環境の作成時にすでに生成されているpython path/to/virtual/env/bin/python3 yourPyFile.pyによる。

1
Nguyen Tan Dat