Сайт | Скачать | Видео | Wiki

Автор Тема: Простое радио для консоли.  (Прочитано 27265 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
Re: Простое радио для консоли.
« Ответ #30 : 06 Декабрь 2020, 20:02:37 »
radio dialog не работает у меня на LFA:
Код
live@lfa1801:~/Radio_dialog_004$ ./r_di_04.sh
./r_di_04.sh: строка 7: синтаксическая ошибка рядом с неожиданным маркером «(»
./r_di_04.sh: строка 7: `select(){'

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
Re: Простое радио для консоли.
« Ответ #31 : 06 Декабрь 2020, 20:33:32 »
Переименовал функцию select в select1 и поправил срипт там где вызовы этой функции - всё заработало. Я так понимаю select где-то уже используется в bash'е (т.е. функция зарезервирована)

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 857
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #32 : 06 Декабрь 2020, 20:38:25 »
Возможно нужно поиграться с фигурными скобками функции , можете взять предыдущую версию, там реализовано без использования функции...

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 857
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #33 : 06 Декабрь 2020, 20:40:41 »
Я так понимаю select где-то уже используется в bash'е (т.е. функция зарезервирована)
Ёпрст а ведь вы правы, как думаете стоит пере залить или же пользователи если не заработает поправят сами?
 какой обидный косяк с моей стороны  :D
« Последнее редактирование: 06 Декабрь 2020, 20:44:55 от totiks2012 »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: Простое радио для консоли.
« Ответ #34 : 06 Декабрь 2020, 20:43:17 »
select где-то уже используется в bash
Замечательно, что на форуме выросли толковые скриптописатели. :) К автору темы это тоже относится.

стоит перезалить
Конечно перезалить.

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
Re: Простое радио для консоли.
« Ответ #35 : 06 Декабрь 2020, 20:44:11 »
Уже всё заработало (я переименовал select в select1). Как я и предполагал select уже используется в bash'е
Код
Пример 10-29. Создание меню с помощью select

#!/bin/bash

PS3='Выберите ваш любимый овощ: ' # строка приглашения к вводу (prompt)

echo

select vegetable in "бобы" "морковь" "картофель" "лук" "брюква"
do
  echo
  echo "Вы предпочитаете $vegetable."
  echo ";-))"
  echo
  break  # если 'break' убрать, то получится бесконечный цикл.
done

exit 0

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: Простое радио для консоли.
« Ответ #36 : 06 Декабрь 2020, 21:02:45 »
Есть онлайн ресурс для проверки кода скрипта https://www.shellcheck.net/. Показывает грубые и не очень ошибки, а также ссылки с пояснениями.

Например, для r_di_04.sh в первой редакции (скрин). Но не надо к этому сервису относиться как к истине в последней инстанции. Если прогнать скрипты sfs, тоже покажет замечания, но при этом они работают.


Так же, помимо сервиса, есть пакет  https://www.archlinux.org/packages/community/x86_64/shellcheck/.
« Последнее редактирование: 06 Декабрь 2020, 21:04:45 от krasnyh »

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 857
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #37 : 06 Декабрь 2020, 21:06:18 »
Есть онлайн ресурс для проверки кода скрипта
Спасибо! Взял в закладки! (Сам сижу сейчас пунцовый от стыда, но без ошибок нет и познаний...)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Простое радио для консоли.
« Ответ #38 : 06 Декабрь 2020, 21:39:06 »
Мой вариант:
Код
#!/bin/sh
err () {
clear
echo "Эммм это пожалуй конец плейлиста"
exit 1
}

dialog --menu "$Q_NAMEВыбери категорию жанра радиостанции " 15 25 15 $(cat ./playlist/jen.txt) 2>./playlist/.1.txt

case $(cat ./playlist/.1.txt) in
1) jen=Jazz ;;
2) jen=news ;;
3) jen=relax ;;
4) jen=rock ;;
5) jen=talk ;;
6) jen=saundtrek ;;
7) jen=clasik ;;
*) err ;;
esac

dialog --menu "$Q_NAMEВыбери  радиостанцию" 15 25 15 $(cat ./playlist/${jen}_name.txt) 2>./playlist/.2.txt
nom_radio=$(cat ./playlist/.2.txt)
name=$(grep $nom_radio ./playlist/${jen}_name.txt) || err
link=$(grep $nom_radio ./playlist/${jen}_link.txt) || err
clear
echo "воспроизводится...$name"
mpg123 $link
exit 0
Вместо mpv использовал mpg123.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 857
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #39 : 06 Декабрь 2020, 21:47:18 »
Мой вариант:
Код
Ого! Вот этот вариант и должен был быть в шапке!

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Простое радио для консоли.
« Ответ #40 : 06 Декабрь 2020, 21:50:50 »
Вот этот вариант и должен был быть в шапке!
Нет. Сырой. Дорабатывайте.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Neyel

  • Ветеран
  • *****
  • Сообщений: 1548
  • Репутация: +28/-0
Re: Простое радио для консоли.
« Ответ #41 : 06 Декабрь 2020, 21:52:30 »
Проверил вариант DDShurick - всё работает  :)

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 857
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #42 : 06 Декабрь 2020, 22:06:20 »
Нет. Сырой. Дорабатывайте.
Почти что нечего...
 
« Последнее редактирование: 06 Декабрь 2020, 22:13:09 от totiks2012 »

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 857
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #43 : 06 Декабрь 2020, 22:15:23 »
name=$(grep $nom_radio ./playlist/${jen}_name.txt) || err
Чешу озадачено репу, я насколько понял это выбор имени по номеру строки , но код настолько мне непонятный , иду медитировать над ним  до глубокой ночи...
upd: вот первые 5 минут размышлений и ровно до этого места мне все понятно
Код
name=$(grep $nom_radio
а вот дальше...  ???
Код
./playlist/${jen}_name.txt)
эти фигурные скобки начинают меня сводить  с ума  :D
как стал догадыватся  значение jen из case подтягивается к _name.txt и если это так , вскакиваю от компа и нет я точно иду подышу на улице, этот финт я однозначно унесу в свои фрагментики, вам спасибо большое за такой код!
« Последнее редактирование: 06 Декабрь 2020, 22:33:52 от totiks2012 »

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1708
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Простое радио для консоли.
« Ответ #44 : 07 Декабрь 2020, 03:25:55 »
Есть онлайн ресурс для проверки кода скрипта https://www.shellcheck.net/. Показывает грубые и не очень ошибки, а также ссылки с пояснениями.

bash -x /путь/скрипт
тоже неплохо использовать

но код настолько мне непонятный , иду медитировать над ним  до глубокой ночи...
По мне - все понятно. У дяди Саши код сам себе комментарий.

Почти что нечего...
Есть что

Автору топика спасибо. Всем предоставил повод поразвлечься
Не только решениями, но и послушать
« Последнее редактирование: 07 Декабрь 2020, 03:35:12 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.