Как изменить sh скрипт?
Есть такой скрипт m3u_to_userbouquet+v2.sh:
#!/bin/sh
#Преобразует плейлисты .m3u в enigma2 userbouquet
cd /tmp ; find -maxdepth 1 -type f -name "*.m3u" | sed 's/^..//' > list
[ ! -s list ] && echo "Нет ни одного файла .m3u в папке /tmp" && exit
while [ -s list ] ; do
m3u=`cat list | head -n1`
name=`echo "$m3u" | sed 's/.m3u//'`
echo "userbouquet.$name.tv"
sed -i "1d" list
sed -i '/^http\|^#EXTINF\|^rtmp/!d' $m3u
sed -i '/^#EXTINF/N;/\n#EXTINF/D' $m3u
sed -i '/^http/N;/\nhttp/D' $m3u
cat $m3u | awk 'NR%2==0 {print $0; print p} {p=$0}' >> file
sed -i '/#EXTINF/!s/:/%3a/g; s/[[:space:]]$\||User-Agent=.*//; N;s/\n#EXTINF.*,/:/; s/ \+/ /g; s/^http\|^rtmp/#SERVICE 4097:0:1:0:0:0:0:0:0:0:&/' file
sed -f /usr/script/reference -i file
echo "Референсы добавлены на каналы в \"userbouquet.$name.tv\""
sed -i "/iptv[12]*.evpanet\|udp\|mpegts/s/SERVICE 4097/SERVICE 1/g; 1s/^/#NAME $name\n/;" file
mv file /etc/enigma2/userbouquet.$name.tv ; rm $m3u
if grep -q "userbouquet.$name.tv" /etc/enigma2/bouquets.tv ; then
echo 'Каналы перезаписаны' ; echo ''
else
echo 'Запись каналов в букеты' ; echo ''
echo "#SERVICE 1:7:1:0:0:0:0:0:0:0:FROM BOUQUET \"userbouquet.$name.tv\" ORDER BY bouquet" >> /etc/enigma2/bouquets.tv
fi
done
echo 'Перезагрузка usrbouquet' ; echo ''
wget -q -O - http://127.0.0.1/web/servicelistreload?mode=2 > /dev/null
exit 0
Нужно убрать из скрипта строки, чтобы это действие не выполнялось.
echo "Референсы добавлены на каналы в userbouquet.$name.tv"
Данные для этой замены скрипт получает из файла; reference
Остальное должно сработать без изменений.
Ответы (1 шт):
Как изменить sh скрипт?
Скрипт это простой текстовый файл. Окткройте его любым текстовым редактором например nano и внесите необходимые изменения:
nano m3u_to_userbouquet+v2.sh
Для сохранения изменений в nano используется комбинация клавиш 'ctrl+o', для выхода из nano используется комбинация клавиш 'ctrl+x'.
Если вы хотите удалить какую-то часть скрипта но не уверены в правильности своих действий, можно не удалять а "закомментировать" часть кода и она не будет выполнятся. Для этого необходимо в начале строки напечатать символ #, вот так:
...
sed -f /usr/script/reference -i file
# echo "Референсы добавлены на каналы в \"userbouquet.$name.tv\""
# sed -i "/iptv[12]*.evpanet\|udp\|mpegts/s/SERVICE 4097/SERVICE 1/g; 1s/^/#NAME $name\n/;" file
# mv file /etc/enigma2/userbouquet.$name.tv ; rm $m3u
if grep -q "userbouquet.$name.tv" /etc/enigma2/bouquets.tv ; then
...
Если изменения не превели к желаемому результату просто "раскомментируйте" строки, удалив символы # в начале строки и попробуйте закомментировать что-то еще. Так методом "научного тыка" можно определить кусок кода выполняющий искомую функцию и удалить/изменить его.
Творите, выдумывайте, пробуйте!)