Pomoc pomoc w edycji skryptu bash

mat29wawa

Nowy użytkownik
Noobie
23 Wrzesień 2019
2
0
1
50
QNAP
null
Ethernet
802.11n (Wi-Fi 4)
Witam wszystkich i od razu w pierwszym poscie prosze o pomoc w edycji skryptu bash.
Jako ze moj stary telewizor Samsung aby poprawnie wyswietlac polskie znaki w napisach srt musi miec ich kodowanie jako utf-8 BOM wywoluje dla kazdego napisu pl.srt w katalogu Movies i Series za pomoca crona skrypt
Kod:
#!/bin/bash

for file in /share/CACHEDEV1_DATA/Download/Movies/*/*.pl.srt
do
	/share/CACHEDEV1_DATA/.qpkg/Entware/bin/addbom "$file"
done
addbom znaleziony w sieci o zawartosci:
Kod:
#!/bin/sh

F="$1"

if [ ! -e "$F" ]; then
	echo "Error: no file: $F"
	exit 1;
fi

(echo -ne '\xEF\xBB\xBF' && iconv -t utf-16 | iconv -f utf-16 -t utf-8) <"$F" >__bomtemp && mv __bomtemp "$F"

problemem jest to ze skrypt za kazdym razem zmienia pliki pl.srt nawet gdy juz sa one zakodowane jako utf-8 BOM.
Czy mozna jakos dopisac do skryptu warunek zeby sprawdzal kodowanie pliku i nie zmienial go jesli nie potrzeba.
Chyba mozna to zrobic uzywajac
Kod:
$ has_bom() { head -c3 "$1" | grep -q $'\xef\xbb\xbf'; }
$ has_bom file && echo yes
yes
Niestety przerasta to moje umiejetnosci dlatego prosze o jakas pomoc
 
ściągaj napisy w UTF-8 ...

dodaj kolejnego checka
file -bi "$F" | grep -i utf8 || (echo -ne '\xEF\xBB\xBF' && iconv -t utf-16 | iconv -f utf-16 -t utf-8) <"$F" >__bomtemp && mv __bomtemp "$F"

nie wiem:
1. skąd tylko wytrzaśniesz iconv na qnapie
2. czemu nie kasujesz plików temp
3. środowisko w qnapie jest przecież załadowane w UTF-8 env | grep -i utf

upload_2019-9-23_19-35-17.png
 
dzieki za pomoc,
musze miec utf-8 BOM zwylke utf-8 nie dzialaja a wiekszosc programow do sciagania srt wlasnie koduje jako utf-8 np bazarr i sub-zero plugin do plexa.
na moim qnap arm8 jest iconv przez entware
nie skrypy musi sprawdzac ciag grep -q $'\xef\xbb\xbf'
Kod:
#!/bin/sh
F="$1"
if [ ! -e "$F" ]; then
    echo "Error: no file: $F"
    exit 1;
fi
file -bi "$F" | grep -q $'\xef\xbb\xbf' || (echo -ne '\xEF\xBB\xBF' && iconv -t utf-16 | iconv -f utf-16 -t utf-8) <"$F" >__bomtemp && mv __bomtemp "$F"

czy to cos ma prawo dzialac, i jeszcze na komcu dodac &&rm__bomtemp "$F" tak?
nie nic z tego albo nie obsluguje grep -q $'\xef\xbb\xbf' albo zle wpisalem...