Bash одинарная кавычка в имени файла и экранирование ffmpeg - PullRequest
1 голос
/ 10 марта 2020

Я хочу преобразовать список файлов fla c в mp3, используя ffmpeg.
Я написал список файлов для преобразования в файл.

Вот мой скрипт

#!/bin/bash

while read -r line
do
    ffmpeg -i "$line" -ab 320k "${line%.flac}.mp3"
done < flac_list

Это работает, однако, когда имя файла содержит одну кавычку, оно не работает.
И вот тут начинается мой уходящий кошмар.
Я нашел десятки комбинаций, но не нашел, как заставить его работать.

Может ли кто-нибудь помочь?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Благодаря @chepner флаг -nostdin, добавленный к ffmpeg, решает проблему.

0 голосов
/ 10 марта 2020

Я также обнаружил, что у ffmpeg иногда возникают удивительные проблемы, если он встречает определенные символы в имени файла. Я наткнулся на эту проблему при преобразовании m4a в mp3 с помощью сценария. Я не знал, что невинная одиночная кавычка - одна из них.

Что вы можете сделать - кроме сообщения об ошибке в ffmpeg - это проверить, содержит ли ваше имя файла нежелательный символ, и переименовать файл или создайте символическую c ссылку на файл, используя «хорошее» имя, и отмените эти изменения, когда ваше преобразование будет завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...