Если задаться следовать рекомендациям shellcheck, то итоговый скрипт примет форму:
#!/bin/bash
#cd ~/radio_dialog_011
opros="y"
while [ "$opros" = "y" ]
do
cat ./playlist/*.m3u | grep -v "#EXTM3U" | grep -v "EXTINF:-1," >./playlist/.pl_l.txt
cat ./playlist/*.m3u | grep -v "http://" | grep -v "https://" | grep -v "#EXTM3U" >./playlist/.pl_n.txt
a=$(cat ./playlist/.pl_n.txt)
echo "${a//#EXTINF:-1,/}" >./playlist/.interm_name.txt
b=$(cat ./playlist/.interm_name.txt)
echo "${b//#EXTM3U/}" >./playlist/.interm_name1.txt
z=$(cat ./playlist/.interm_name1.txt)
echo "${z// /_}" >./playlist/.interm_name2.txt
c=$(cat -n ./playlist/.interm_name2.txt)
dialog --menu "$Выбери категорию жанра радиостанции " 35 35 47 $(echo "$c") 2>./playlist/.nomer.txt
if test $? -eq 0
then
nom_radio=$(cat ./playlist/.nomer.txt)
sed -n "$nom_radio"p ./playlist/.interm_name2.txt >./playlist/.n.txt
sed -n "$nom_radio"p ./playlist/.pl_l.txt >./playlist/.l.txt
link=$(cat ./playlist/.l.txt)
name=$(cat ./playlist/.n.txt)
clear
echo "воспроизводится...""$name"
mpv --volume=45 "$link"
else
cd ./playlist || exit
rm .*.txt
exit
fi
done
- замена обратных кавычек на $()
- добавлено || exit
- удалено echo, где и без него работает
Остаются только два замечания, закавычить $(echo "$c"), но это сломает скрипт. Такие исключения описаны в
SC2046. И замечание об избыточном echo
SC2116. Здесь или оставить как есть, или так
c=./playlist/.interm_name2.txt
$(cat -n "$c") 2>./playlist/.nomer.txtp.s. Конечно много текста и совсем не по теме, но я туже учусь. Ведь никто не поможет кроме себя.
А тема грамотного скрипто-написания мне интересна.