php передает строки во внешнюю команду diff - PullRequest
0 голосов
/ 08 февраля 2012

Моя программа генерирует две строки, и я хочу, чтобы они сравнивались внешним инструментом сравнения. Инструмент diff принимает в качестве аргументов только файлы / каталоги. Это diff file1 file2 работает отлично, но diff "hello" "world" не работает. Есть ли способ передать мои строки непосредственно в diff без создания каких-либо временных файлов? Благодарю.

1 Ответ

2 голосов
/ 08 февраля 2012

На оболочке вы можете использовать временные трубы.

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

Используйте оператор backticks или любой другой метод для выполнения команды в php. Подробнее о выполнении команд см. В руководстве: http://www.php.net/manual/en/ref.exec.php

Убедитесь, что вы правильно экранировали строки.

РЕДАКТИРОВАТЬ: Эта функция называется временные трубы. Таким образом, оболочка переводит его в дескриптор файла.

iblue@nerdpol:~$ echo <(echo "string")
/dev/fd/63
iblue@nerdpol:~$ cat <(echo "string")
string

Подробное объяснение см. http://www.linuxjournal.com/article/2156?page=0,1

...