aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Здравствуйте, опять обращаюсь дабы обрести знания великого баша. Передо мной стоит задача ставить фильм на паузу в XBMC когда я переключаюсь на другой display:=1 (tty8), где у меня открыт браузер. Переключаюсь с помощью скрипта в котором выполняется команда chvt 8, на паузу можно ставить, нажав на клавиатуре кнопку P, или сэумилировав ее нажатие из консоли xdotool key p. Скрипт переключения в кратце выглядит так: #!/bin/bash xdotool key p sudo chvt 8 Когда я смотрю фильм, а потом кнопочкой с пульта выполняю команду переключиться на браузер, скрипт срабатывает и фильм ставится на паузу. Отлично! Потом я переключаюсь обратно на фильм, фильм все еще на паузе, то что надо! Но вдруг я понимаю, что мне опять нужно в интернет, и перключаюсь на браузер, в этот момент срабатывает скрипт и фильм снимается с паузы той же командой, что и ставился. Вообщем чтобы этого не просиходило, нужно сделать проверку, если фильм стоит на паузе, то ничего не делать, если не стоит, то исполнить команду xdotool key p. Вижу это как-то так: В .bash_profile export PAUSE=0 0 - проигрывает, 1 - пауза #!/bin/bash if ((PAUSE==0)) then xdotool key p PAUSE=1 else PAUSE=0 fi sudo chvt 8 С синтаксисом помогите, а может и алгоритм где страдает, я на стадии начального обучения. Интересно, а как я проверю, что фильм на паузе, если я на паузу в ручную поставлю, нажав кнопку в xbmc …. |
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
“Глобальность” переменных окружения относительна. Переменные, создаваемые в баше простым присвоением, это его внутренние переменные, и они НЕ наследуются. Переменные окружения башу уже не принадлежат, они могут устанавливаться любой программой для передачи процессам-потомкам. В bash это делается командой export, а в csh/tcsh, к примеру, командой setenv Но даже эти переменные наследуются только от процесса-родителя к процессу-потомку, а НЕ наоборот. Поэтому глобальными становятся только те, что уже были заданы при инициализации системы, и “размножились” при запуске новых процессов. Переопределить их можно лишь локально. Поэтому если процесс, который читает переменную окружения, не является потомком процесса, который её задаёт, то они будут иметь дело фактически с РАЗНЫМИ переменными, и передача данных не состоится. Но это не значит, что передать ничего нельзя. Достаточно просто использовать вместо переменной файл. При завершении (и на всякий случай при запуске) плеера: rm -f /tmp/.xbmc.paused if [ ! -f /tmp/.xbmc.paused] ; then # если файл не существует echo > /tmp/.xbmc.paused # создаём файл xdotool key p # и ставим на паузу fi if [ -f /tmp/.xbmc.paused] ; then если файл существует xdotool key p # снимаем с паузы rm /tmp/.xbmc.paused # и удаляем файл fi |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Спасибо! изучаю баш |