Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: command 2>&1 | expr match
Форумы портала PHP.SU » Серверное администрирование » Администрирование *nix » command 2>&1 | expr match

Страниц (1): [1]
 

1. DeepVarvar - 18 Февраля, 2013 - 17:41:25 - перейти к сообщению
Чесслово впервые пишу баш-скрипт с такими вот выкрутасами:
Есть ffmpeg. Он сливает инфу о входном файле как ни странно в STDERR, а инфу статуса в STDOUT.
Я сделал перенаправление:
CODE (bash):
скопировать код в буфер обмена
  1. report=`ffmpeg [параметры перекодировки] 2>&1`
  2. echo $report

Ага, собирает в переменную текст вывода.
Теперь я хочу сматчить кол-во кадров:
CODE (bash):
скопировать код в буфер обмена
  1. report=`expr match "$report" '.*duration : \([0-9]*\).*'`
  2. echo $report

Не работает. А вот если вместо $report вставить строку которую сплюнул ffmpeg ручками, то работает.
В чем прикол?

Или так - зная что в никсах можно одну задачу сделать разными способами, спрошу, не знает ли кто иной способ стырить из вывода нужную циферку кол-ва кадров?
Писать в файл - костыль же Улыбка

Кстати, может я могу свой поток|дескриптор_потока собственный открыть, чтобы в него и перенаправить, вместо перенаправления в STDOUT или записи в файл и чтения оттуда?
(Добавление)
Нашел проблему. Если в выводе есть EOL то матч падает.

 

Powered by ExBB FM 1.0 RC1