LINUX.ORG.RU

bash: pulseaudio --check

 , ,


0

1

Всем привет.

Кто-то может мне объяснить, почему не отрабатывает однострочник для проверки запущенного pulseaudio?

Вот, что происходит:

int@localhost ~ $ pulseaudio --check 
int@localhost ~ $ echo $?
1
int@localhost ~ $ [ $(pulseaudio --check) ] && echo "yes" || echo "no"
no
Ок, допустим. Дальше запускаю pulseaudio:
int@localhost ~ $ pulseaudio -D
int@localhost ~ $ pulseaudio --check 
int@localhost ~ $ echo $?
0
int@localhost ~ $ [ $(pulseaudio --check) ] && echo "yes" || echo "no"
no

В мане говорится следующее:

--check
              Return 0 as return code when the PulseAudio daemon is already running for the calling user, or non-zero otherwise. Produces no output on the console except for errors to stderr.

С grep'ом работает:

int@localhost ~ $ echo 'hello' >> /tmp/foo
int@localhost ~ $ [ $(grep 'hello' /tmp/foo) ] && echo "yes" || echo "no"
yes
int@localhost ~ $ [ $(grep 'olleh' /tmp/foo) ] && echo "yes" || echo "no"
no


Потому что вы не знаете bash. [ $(xxx) ] означает: проверить пустая или нет строка, генерируемая командой xxx.

vodz ★★★★★
()

[ $(pulseaudio –check) ]

да, что-то маловато скобочек, добавь ищо (на самом деле они здесь вообще не нужны, пеши просто pulseaudio --check && ...

anonymous
()
Ответ на: комментарий от anonymous

Спасибо. Я наткнулся ещё на одну проблему, при вроверке пульсы, скрипт сразу же выходит, а мне нужно, чтобы он продолажлся

ubik
() автор топика

olleh

Олегу Леннарт из розетки

Позволил убивать людей.

Олег читает сырцы systemd,

Запоминает имена.

xvostostrel
()
Ответ на: комментарий от ubik

Скрипт выходит, если есть pulseaudio --check не обёрнутый if’ом или &&||.

set -o errexit - полезная вещь, я стараюсь её всегда использовать.

legolegs ★★★★★
()
Ответ на: комментарий от ubik

Спасибо, сажусь смотреть ман :)

А что тут смотреть?

└► pulseaudio --check; echo $?; pulseaudio --check && echo 'yes' || echo 'no'
0
yes

dexpl ★★★★★
()
Ответ на: комментарий от legolegs

че-то не выходит у меня с errexit'ом :-(

ubik
() автор топика
Ответ на: комментарий от ubik

скрипт сразу же выходит, а мне нужно, чтобы он продолажлся

while ture; do
    pulseaudio --check && echo yes || echo no
done

ты проверил статус, вывел «да» или «нет», что ещё тебе нужно? зачем чтобы он «продолжался»?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.