Проверить глобальную переменную на bash

Здравствуйте, опять обращаюсь дабы обрести знания великого баша.
Передо мной стоит задача ставить фильм на паузу в 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 ….
“Глобальность” переменных окружения относительна.
Переменные, создаваемые в баше простым присвоением, это его внутренние переменные, и они НЕ наследуются.
Переменные окружения башу уже не принадлежат, они могут устанавливаться любой программой для передачи процессам-потомкам. В 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
Спасибо! изучаю баш
 
Зарегистрироваться или войдите чтобы оставить сообщение.