Моя программа генерирует две строки, и я хочу, чтобы они сравнивались с внешним инструментом diff. Инструмент diff принимает только файлы/каталоги в качестве аргументов. Это diff file1 file2
работает отлично, но diff "hello" "world"
не работает. Есть ли способ передать мои строки непосредственно на diff
без создания временных файлов? Благодарю.php, передающий строки для внешней команды diff
ответ
На корпусе вы можете использовать временные трубы.
diff <(echo "string 1") <(echo "string 2")
Используйте оператор backticks или любой другой метод для выполнения команды в php. Подробнее о выполнении команд см. В руководстве: http://www.php.net/manual/en/ref.exec.php
Убедитесь, что вы правильно избегаете строк.
EDIT: Эта функция называется временными трубами. Таким образом, оболочка переводит его в дескриптор файла.
[email protected]:~$ echo <(echo "string")
/dev/fd/63
[email protected]:~$ cat <(echo "string")
string
Для детального объяснения см http://www.linuxjournal.com/article/2156?page=0,1
Работает! Не могли бы вы объяснить, как <(эхо-строка 1 ") может имитировать файл в оболочке? – Shawn
AFAIK Он просто присоединяет две трубы к команде diff, как два STDIN. Но я не знаю, почему и как это работает. Вот почему я задал следующий вопрос: http://stackoverflow.com/questions/9195117/two-pipes-to-one-command – iblue
Возможно, это объясняет это? http://www.linuxjournal.com/article/2156?page=0,1 – Shawn
- 1. Каковы аргументы, которые git diff использует для команды diff?
- 2. Функция возвращает результат строки внешней команды
- 3. Использование команды svn diff
- 4. Запуск внешней команды с php из linux
- 5. Параметр команды, передающий родительскую ссылку
- 6. Diff команды в Баш
- 7. diff формат метки команды
- 8. Perforce визуальный diff разветвленного файла (p4 diff2 с внешней diff)
- 9. Оптимизация внешней команды Perl
- 10. Несогласованный результат команды SVN diff
- 11. Vim: регистр трубы для внешней команды
- 12. Как получить вывод команды diff на новые строки
- 13. vim Выполнение команды diff дважды
- 14. Git- понимание вывода команды diff
- 15. Node.js - вызов системной команды или внешней команды
- 16. Использование команды diff, игнорировать символ в конце строки
- 17. Запуск внешней команды изнутри Perl
- 18. извлечь вывод из внешней команды
- 19. Выполнение внешней команды при запуске
- 20. Проблема при запуске внешней команды
- 21. Поймать ошибки от внешней команды
- 22. PHP передающий массив классу
- 23. GWT-JSNI, передающий JavaScriptObject во внешней библиотеке JS
- 24. PHP, передающий параметры сценарию backgound
- 25. Вызов внешней команды в Python
- 26. Вызов внешней команды в Python
- 27. Вызов внешней команды в GO
- 28. Повторное выполнение последней строки вывода из внешней команды
- 29. Ruby: получить выход внешней команды, даже если нет разрыва строки
- 30. Как получить вывод внешней команды в Perl?
Что "внешний инструмент сравнения"? – Richard
какой программ вы используете для diff? (подробнее просьба) – bizzr3
The linux diff инструмент. Просто $> diff – Shawn