Я использую небольшую программу, написанную кем-то еще на bash, которая работает в соответствии с cron на моем Synology NAS, и в основном она выполняет поиск субтитров для моей коллекции фильмов и, при необходимости, преобразует их кодировку в utf8.
В общем случае основной скрипт bash вызывает других подписчиков, и, к сожалению, он не работает на 100%, как следует.Во время моего исследования я сузил проблему, связанную с этой конкретной функцией в одном из индексов:
subs_getCharset_SO() {
local file="$1"
local charset=
local et=
tools_isDetected "file" || return $G_RETFAIL
et=$(file \
--brief \
--mime-encoding \
--exclude apptype \
--exclude tokens \
--exclude cdf \
--exclude compress \
--exclude elf \
--exclude soft \
--exclude tar \
"$file" | wrappers_lcase_SO) || {
return $G_RETFAIL
}
case "$et" in
*utf*) charset="UTF8";;
*iso*) charset="ISO-8859-2";;
us-ascii) charset="US-ASCII";;
csascii) charset="CSASCII";;
*ascii*) charset="ASCII";;
*) charset="WINDOWS-1250";;
esac
echo "$charset"
}
Оказывается, что выполнение команды file для каждого файла фильма всегда вызываетОшибка сегментации.Я воспроизвел ее, запустив эту команду в терминале вручную:
admin@Synek:/volume1/video/Filmy/Ghostland.2018$ file --brief --mime encoding Ghostland.2018.txt
Вывод:
utf-8
Segmentation fault
Так что моя главная проблема, как мне кажется, заключается в том, что вывод file
команда не назначена переменной et
.В идеале моей целью было бы захватить первую строку вывода и присвоить ее переменной et
.Или, по крайней мере, перенаправить вывод в файл, поэтому я попробовал некоторые решения, которые я нашел в Интернете:
admin@Synek:/volume1/video/Filmy/Ghostland.2018$ { file --brief --mime-encoding ./Ghostland.2018.txt; } 2> log
, который выводит на терминал только нужную мне строку и пропускает сообщение об ошибке сегментации:
utf8
Запуск:
admin@Synek:/volume1/video/Filmy/Ghostland.2018$ cat log
Дает:
Segmentation fault
Но я просто не могу найти способ получить первую строку до того, как написана ошибка сегментациив выходной файл журнала.
Любая помощь приветствуется!