BASH - запустить MPlayer, если на дисплее нет ни одного пользователя: 0 или более одного аргумента - PullRequest
2 голосов
/ 23 мая 2010

Это скрипт, который у меня сейчас есть

#!/bin/bash
if["$#" == "2" OR who | grep ":0" == ""]
    export DISPLAY=:0
    xset dpms force on
    mplayer -fs $1.mp4
fi

Это не работает.

Спасибо за вашу помощь.

Ответы [ 3 ]

3 голосов
/ 23 мая 2010

Вы должны потратить некоторое время на чтение man test, мне кажется, у вас тут несколько проблем:

if [ "$#" = "2" -o -z "$(who | grep ':0')" ]; then
  • Обратите внимание на пробел после [.
  • Обратите внимание на один знак равенства для сравнения строк.
  • Обратите внимание, что -o является оператором OR.
  • Обратите внимание на -z для проверки пустой строки.
  • Обратите внимание на $(...) для выполнения команды who.
  • Обратите внимание на пробел перед ].
  • Тем не менее, who печатает время и grep собирается сопоставить множество ложных срабатываний с HH:MM:SS. Вы можете улучшить свой матч.
  • И, как отмечают другие ответы, вам, вероятно, следует проверить успешность $(who|grep), а не проверять вывод пустой строки.

В будущем предпочтительнее больше деталей, чем "это не работает";)

1 голос
/ 23 мая 2010

В BASH тест для NULL равен - z, например if [ -z "$NAME" ]; then ....Однако вы также можете легко использовать вместо этого состояние выхода из grep:

root@tpost-desktop:/usr/src# who | grep :0
tpost    tty7         2010-05-23 09:16 (:0)
root@tpost-desktop:/usr/src# echo $?
0

root@tpost-desktop:/usr/src# who | grep :123
root@tpost-desktop:/usr/src# echo $?
1

Если grep не нашел то, что вы просили, он выйдет с ненулевым статусом.Таким образом, вы можете сделать что-то вроде:

who | grep :0 >/dev/null 2>&1
if [ $? = 0 ]; then
   USING_DISPLAY=1
else
   USING_DISPLAY=0
fi

Затем проверьте значение USING_DISPLAY, воспроизведите фильм, если оно 0

0 голосов
/ 24 мая 2010

Должен быть пробел после if, после [ и перед ']'.

#!/bin/bash
if [ "$#" == "2" ] || ! who | grep '(.*:0.*)$' > /dev/null 2>&1
then
    export DISPLAY=:0
    xset dpms force on
    mplayer -fs $1.mp4
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...