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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: несколько вопросов новичка по башу  (Прочитано 389 раз)

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

Оффлайн Redneck

  • Автор темы
  • Активист
  • *
  • Сообщений: 454
    • Просмотр профиля
несколько вопросов новичка по башу
« : 01 Февраль 2012, 18:41:12 »
пишу свой первый дельный баш-скрипт. возникло несколько вопросов, где искать ответы - не знаю
1) нужно из скрипта запустить программу в фоне, так, чтобы скрипт продолжил выполняться, не дожидаясь завершения этой программы (в моем случае это будет окно терминала с запущенной в нем консольной прогой)
2) нужно присвоить переменной значение аргумента командной строки
3) нужно найти в файле строчку (в моем случае начинающуюся с "http") и тоже присвоить ее переменной (возможно ли это вообще из баша?)
3.1) и передать эту строчку в программу как один из аргументов ком.строки
AMD FX-6300 X6, 4Gb DDR3, Radeon HD7850
Перешел на Арчь, так что здесь уже бываю реже

Оффлайн Charles Malaheenee

  • Активист
  • *
  • Сообщений: 756
  • Учтите, мы можем дать и вредный совет.
    • Просмотр профиля
Re: несколько вопросов новичка по башу
« Ответ #1 : 01 Февраль 2012, 18:52:39 »
1) команда &>/dev/null & disown
2) Не поняли? $(команда)
3) VARIABLE=$(cat file | grep string) - или если файл шибко большой, то побаловаться с sed.

http://www.opennet.ru/docs/RUS/bash_scripting_guide/
Debian Sid (XFCE) x 2; Debian Sid (Openbox) x 1.
Все мы где-то, когда-то и в чем-то были новичками.

Оффлайн Redneck

  • Автор темы
  • Активист
  • *
  • Сообщений: 454
    • Просмотр профиля
Re: несколько вопросов новичка по башу
« Ответ #2 : 01 Февраль 2012, 20:08:49 »
1 пункт: спасибо! пишу например "konsole ...параметры... &>/dev/null & disown". только не понял, что означает сообщение "disown: not found"
2 пункт: не понял...
3 пкнкт: спасибо! пишу например "myurl=$(cat mystreaminfo.txt | grep http)", и потом например "vlc $myurl"
за ссылку Домо Аригато, там нашел хелп по второму пункту: переменная "$1"
п.с. скрипт вроде написал, запустил, работает...

Пользователь решил продолжить мысль 01 Февраль 2012, 20:39:09:
кстати, вот получившийся мини-скрипт, так сказать, в помощь любителям интернет-радио:
#!/bin/bash
# my-rip-script
myurl=$(cat $1 | grep http)
x-terminal-emulator -e streamripper $myurl -d "$HOME/tests/radiorip" -r -o always &>/dev/null & disown
sleep 15
vlc http://localhost:8000
пример запуска, для тех, кто в мехе:
sh my-rip-script some-radio.m3u
« Последнее редактирование: 01 Февраль 2012, 20:39:09 от Redneck »
AMD FX-6300 X6, 4Gb DDR3, Radeon HD7850
Перешел на Арчь, так что здесь уже бываю реже

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: несколько вопросов новичка по башу
« Ответ #3 : 02 Февраль 2012, 05:20:03 »
пункт 0 - даже малые дети знают что ответы надо искать в гугле
1) ./my_sub_script &
символ амперсанда отправляет процесс в бэкграунд сразу после этой команды можно получить pid запущенного процесса примерно так pid_of_my_script=$! чтобы потом можно было дождаться завершения этого скрипта командой wait $pid_of_my_script
2) new_var=$1 2 3 и т.д. видимо уже освоил
3) если одну первую url=$(grep ^http $file_name | head -n 1)
с 3.1 тоже видимо разобрался

Оффлайн Redneck

  • Автор темы
  • Активист
  • *
  • Сообщений: 454
    • Просмотр профиля
Re: несколько вопросов новичка по башу
« Ответ #4 : 02 Февраль 2012, 13:30:08 »
символ амперсанда отправляет ... чтобы потом можно было дождаться завершения этого скрипта командой wait $pid_of_my_script
насчет "&" буду знать, спасибо, попробую
а "sleep 15" - это примерное время подключения к серверу, оно не связано с временем выполнения процесса streamripper
3) если одну первую url=$(grep ^http $file_name | head -n 1)
спасибо, иду поправлять скрипт и параллельно читать маны

Пользователь решил продолжить мысль 02 Февраль 2012, 13:43:59:
так понял, "cat file.m3u | grep ^http" и "grep file.m3u ^http" одно и то же делают?..
« Последнее редактирование: 02 Февраль 2012, 13:43:59 от Redneck »
AMD FX-6300 X6, 4Gb DDR3, Radeon HD7850
Перешел на Арчь, так что здесь уже бываю реже

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: несколько вопросов новичка по башу
« Ответ #5 : 03 Февраль 2012, 06:11:32 »
да. только в первом случае будет запущено 2 процесса а во втором 1

Оффлайн Redneck

  • Автор темы
  • Активист
  • *
  • Сообщений: 454
    • Просмотр профиля
Re: несколько вопросов новичка по башу
« Ответ #6 : 03 Февраль 2012, 15:09:55 »
вторая "альфа":
#!/bin/bash
# my-rip-script v0.2.1.0006
# using: sh my-rip-script <filename.m3u>
myurl=$(grep ^http $1 | head -n 1)
x-terminal-emulator -e streamripper $myurl -d "$HOME/purgatory/radiorip" -r -o always &
sleep 15
vlc http://localhost:8000
а ведь сначала хотел все это в QTе писать, да еще с гуём...
если модератор посчитает сие флудом, пусть удалит
« Последнее редактирование: 03 Февраль 2012, 15:12:42 от Redneck »
AMD FX-6300 X6, 4Gb DDR3, Radeon HD7850
Перешел на Арчь, так что здесь уже бываю реже

 

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