while цикл работает только один раз?

Я пытаюсь сделать клип из видеофайла, играя его только на определенный интервал.

make_mclip.sh

#!/bin/bash mediafile=$@ mediafile_fullpath=$PWD/./$mediafile tmpedlfile=$(mktemp) mplayer -edlout $tmpedlfile "$mediafile" &> /dev/null cat $tmpedlfile | while read f do startpos=$(echo $f | awk '{print $1}') endpos=$(echo $f | awk '{print $2}') length=$(echo "$endpos-$startpos" | bc) tmpclip=$(mktemp --suffix='.mclip' --tmpdir=$PWD) echo -e "$mediafile_fullpath\t$startpos\t$length" > $tmpclip mplayer_clip.sh "$tmpclip" &>/dev/null echo -n "clip name : " read clipname < /dev/tty mv -nv "$tmpclip" "$clipname.mclip" done echo doing rm "$tmpedlfile" 

mplayer_mclip.sh

 #!/bin/bash mediafile=$(cat "$@" | awk -F'\t' '{print $1}') startpos=$(cat "$@" | awk -F'\t' '{print $2}') length=$(cat "$@" | awk -F'\t' '{print $3}') mplayer -ss $startpos -endpos $length "$mediafile" &> /dev/null 

Но по какой-то причине цикл while в make_mclip.sh запускается только один раз, даже если $ tempedlfile содержит более одной строки; единственное исключение – если строка

  mplayer_clip.sh "$tmpclip" &>/dev/null 

удален.

Что не так ?

пс. Я также хотел бы знать, есть ли для этого программа.

One Solution collect form web for “while цикл работает только один раз?”

mplayer «потребляет» оставшееся содержимое tmpedlfile. Вам нужно добавить параметр, чтобы он не игнорировал его stdin:

 mplayer -noconsolecontrols -ss $startpos -endpos $length "$mediafile" &> /dev/null 
  • Linux: как перенаправить stdout и stderr в logger?
  • Как я могу заставить stdin всегда потребляться?
  • Как передать текст для тела электронной почты Mutt, а затем отредактировать электронную почту в интерактивном режиме?
  • Как создать объединенный вход (stdin) для программы
  • Как обмануть приложение, ожидающее файл: // читать из stdin?
  • Как сделать wc интерпретировать стандарт как список файлов
  • Сценарий Ed работает только в том случае, если набирается медленно
  • Может ли написать stdout место противодавления в процессе?
  • Могу ли я читать и писать в тот же файл в Linux, не перезаписывая его?
  • Cygwin - хвост останавливает чтение входной трубы после первой записи
  • автоматически записывать ответы на программу, которая уже читает со стандарта в
  • Interesting Posts

    Как узнать, является ли ошибка чтения на оптическом диске из-за поврежденной файловой системы или физического повреждения?

    Ошибка с сертификатами fetchmail и SSL

    Не могу понять, почему epel не появляется на реплике yum

    Узнайте, поддерживает ли процессор динамическую скорость

    Шифрование сертификата p12

    Точка с запятой в условных структурах

    Отключить блокировку Caps при нажатии Escape

    См. Информацию о потреблении диска, используя команду «df» в AIX

    Что делает «make install» в Makefile, который поставляется с ядром?

    Проблемы с basename в цикле

    Программа обновления файлов конфигурации

    Как перемещать строку из одной строки в другую

    подсчет количества строк с определенным текстом и извлечение строк из положительных результатов

    Возможно ли для командной строки открыть веб-сайт и вставить клип-панель в текстовое поле?

    Как анализировать команды из текстового файла в сценарий bash в CLI

    Linux и Unix - лучшая ОС в мире.