Я пытаюсь получить тип звука в сценарии OSX sh
, используя ffprobe: ffprobe "$i" |& egrep -ci "vorbis|aac"
работает от cli в tcsh
, но не из сценария. |&
, похоже, не работает из внутреннего скрипта. |&
перенаправляет вывод из ffprobe, иначе ffprobe распечатывает cli. Любая помощь приветствуется.pipe ffprobe in sh script
##mkv files
for i in "$input"*.mkv ; do
if [ -e "$i" ] ; then
##1st check type(vorbis|aac)
type=$(/usr/local/bin/ffprobe "$i" |& egrep -i "vorbis|aac")
echo "Test: $type"
##just get audio format
type=$(/usr/bin/perl -e '[email protected][0];if (/(aac|vorbis)/ig) {print $1;}' "$type")
echo "Type: $type"
exit
fi
done
ошибки я получаю:
command substitution: line 46: syntax error near unexpected token `&'
command substitution: line 46: `/usr/local/bin/ffprobe "$i" |& egrep -i "vorbis|aac"'
Почему вам нужно '| &' (я обычно не использую это, поэтому не помню, что это такое). Разве вы не можете просто «ffprobe» $ i »| grep -i ... '? Также ваш код выглядит как 'bash' или связанные с ним оболочки, а не tcsh. Например, 'tcsh' использует' endif', а не 'fi'. Удачи. – shellter
Почему вы думаете, что это скрипт 'tcsh'? Это похоже на сценарий оболочки Bourne. '| &' не является стандартной конструкцией оболочки Bourne и работает только с 'bash' и, возможно, с некоторыми другими расширениями оболочки Bourne (и' csh' также имеет это). Этот скрипт должен работать нормально, если вы запустите его с помощью 'bash'. – Carpetsmoker
Возможно, вам следует уточнить свой вопрос (отредактируйте текст и теги тоже!) И включите в него фактическое сообщение об ошибке; как есть, мы должны угадать слишком много вещей. – tripleee