Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: вопрос с переменными в shell скрипте  (Прочитано 2047 раз)

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

Оффлайн mixa3607

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Спрашиваю не совсем про ubuntu но про unix подобную систему(Android).
Надо написать скрипт для скачивания потокового видео с moonwalk'a и тому подобных сайтов. В начале вложу докуда дошёл.
Код: (php) [Выделить]
#!system/bin
#это я ввожу ссылку типа http://123/123/123.m3u8
parametr1=$1
#скачиваю плэйлист *.m3u8
wget $1
#отрезаю от ссылки всё за последним слэшем
var=$(echo $1 |rev |sed -r 's!^[^/]+!!' |rev )
#беру из *.m3u8 всё строки с ts | не могу добавить содержимое $var перед каждой строкой :'( выдоёт что не верная опция в sed > вывожу в файл
grep -i 'ts' *.m3u8 |sed "s/^/$var/" > links.txt
Главное если знак $ экранировать с помощью \ то всё прокатывает, но и $ интерпретируется как простой символ.
Собственно вопрос как добавить содержимое переменной $var перед каждой строкой?

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14038
  • Xubuntu 18.04
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #1 : 31 Июля 2015, 20:57:19 »
mixa3607,
А что выводит? И проверьте содержимое var.

Пользователь решил продолжить мысль [time]31 Июль 2015, 21:05:35[/time]:
Ну и отрезание после слеша делается проще

var=$(echo $1 | awk -F "/" '{print $NF}')
« Последнее редактирование: 31 Июля 2015, 21:08:20 от Pilot6 »
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #2 : 31 Июля 2015, 21:08:08 »
Код: (php) [Выделить]
s!^!$var!
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14038
  • Xubuntu 18.04
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #3 : 31 Июля 2015, 21:08:48 »
Azure,
Да и так было правильно.

Пардон. А я наоборот оставил после последнего слеша, а надо наоборот.

Тогда так

var=$(echo $1 | sed 's%/[^/]*$%/%')
« Последнее редактирование: 31 Июля 2015, 21:14:32 от Pilot6 »
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #4 : 31 Июля 2015, 21:13:41 »
Pilot6, В переменной var адрес со слэшами, поэтому и ошибку выдаёт.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14038
  • Xubuntu 18.04
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #5 : 31 Июля 2015, 21:16:34 »
Azure,
Ага. Тогда последняя строка

grep -i 'ts' *.m3u8 |sed "s,^,$var," > links.txtФокус в том, что sedу фиолетово что там разделитель. Что открыли, то и закрыть надо. Так слеши не мешают.

Короче вот

#!system/bin
#это я ввожу ссылку типа http://123/123/123.m3u8
parametr1=$1
#скачиваю плэйлист *.m3u8
wget $1
#отрезаю от ссылки всё за последним слэшем
var=$(echo $1 | sed 's%/[^/]*$%/%')
#беру из *.m3u8 всё строки с ts | не могу добавить содержимое $var перед каждой строкой :'( выдоёт что не верная опция в sed > вывожу в файл
grep -i 'ts' *.m3u8 | sed "s,^,$var," > links.txt

Только не понятно зачем parametr1.
« Последнее редактирование: 31 Июля 2015, 21:27:22 от Pilot6 »
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн mixa3607

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #6 : 31 Июля 2015, 22:16:55 »
Azure,
grep -i 'ts' *.m3u8 | sed "s,^,$var," > links.txt
Ну хоть ты тресни sed: bad option in substitution expression и всё.
А и parametr1 это что бы задавать ссылку через консоль типо sh ./<name>.sh <link>

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14038
  • Xubuntu 18.04
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #7 : 31 Июля 2015, 22:19:33 »
mixa3607,
А у меня на компе работает. Может в андроиде баш какой-то не такой.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4069
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #8 : 31 Июля 2015, 22:28:04 »
В андроиде sh. там не все проги стоят.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн mixa3607

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #9 : 01 Августа 2015, 20:07:01 »
Я понял! В ссылке есть запятая (http://<бла бла>hls/tracks-2,4/index.m3u8)
И что делать с этим?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14038
  • Xubuntu 18.04
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #11 : 01 Августа 2015, 20:16:07 »
mixa3607,
Там можно использовать любой символ в качестве разделителя.
Как сказано выше ! подойдет.

Я про запятую не сообразил, так как тестировал на других ссылках. Там зяпятых не было. ;-)
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4069
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #12 : 01 Августа 2015, 21:54:06 »
mixa3607, "$var"
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн mixa3607

  • Автор темы
  • Новичок
  • *
  • Сообщений: 7
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #13 : 01 Августа 2015, 22:05:25 »
Ничего не понимаю! Через консоль если задать переменную и дальше её подставить -работает , а в скрипте нет :o

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: вопрос с переменными в shell скрипте
« Ответ #14 : 01 Августа 2015, 22:49:43 »
Еще проше отрезать все от последнего слеша до конца:
var="$(dirname "$1")"
var="$var"/

mixa3607,
Так можно проверить переменную:
echo "$var"
Попробуй разделитель % в sed'е


Пользователь решил продолжить мысль [time]02 Август 2015, 00:13:07[/time]:
Если с sed'ом не работает, то можно пропустить через цикл:

Код: (bash) [Выделить]
#!system/bin
IFS=$'\n'
parametr1=$1
wget "$1"
var="$(dirname "$1")"
var="$var"/

for X in `grep -i 'ts' *.m3u8`; do
echo "$var/$X" >> links.txt
done
« Последнее редактирование: 01 Августа 2015, 23:15:08 от <Fryvrvywr> »

 

Страница сгенерирована за 0.051 секунд. Запросов: 24.