2012-02-08 3 views
0

私のプログラムは2つの文字列を生成し、それらを外部のdiffツールで比較します。 diffツールはファイル/ディレクトリだけを引数として受け入れます。それはdiff file1 file2が完全に動作しますが、diff "hello" "world"は機能しません。テンポラリファイルを作成せずに直接diffに文字列を渡す方法はありますか?ありがとう。PHPが文字列を外部のdiffコマンドに渡す

+0

"外部差分ツール" とは何であるを参照してください? – Richard

+0

あなたはdiffのためにどのようなプログラムを使用していますか? (詳細はどうぞ) – bizzr3

+0

linux diffツール。単純に$> diff – Shawn

答えて

2

シェルでは、一時的なパイプを使用できます。

diff <(echo "string 1") <(echo "string 2") 

backticks演算子または他の方法を使用して、このコマンドをPHPで実行します。コマンドの実行の詳細については、マニュアルを参照してください。http://www.php.net/manual/en/ref.exec.php

文字列を正しくエスケープしてください。

編集:この機能は一時的パイプと呼ばれます。したがって、シェルはファイル記述子に変換します。

[email protected]:~$ echo <(echo "string") 
/dev/fd/63 
[email protected]:~$ cat <(echo "string") 
string 

詳細な説明についてはhttp://www.linuxjournal.com/article/2156?page=0,1

+0

作品! <(echo "string 1")がシェル内のファイルをどのようにシミュレートできるか詳しく説明できますか? – Shawn

+0

AFAIK 2つのSTDINのように、diffコマンドに2つのパイプを接続するだけです。しかし、私はなぜ、どのように正確に動作するのかわかりません。だからこそ私は次の質問をしました:http://stackoverflow.com/questions/9195117/two-pipes-to-one-command – iblue

+0

おそらくこれについて説明しますか? http://www.linuxjournal.com/article/2156?page=0,1 – Shawn

関連する問題