Установка переменной из stderr асинхронно - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь запустить команду (wminput) в bash-скрипте и сохранить ее stderr в переменной.

Этот stderr будет выведен только в случае сбоя команды.Если это удастся, он не будет распечатан на stderr и не выйдет, пока не выйдет что-то еще, что займет от нескольких секунд до часов.Итак, я не могу сделать:

output=$(wminput -r -q 2>&1 >/dev/null)

, иначе весь скрипт зависнет.И BASH не нравится, если я делаю

wminput -r -q 2>&check >/dev/null &

И это ничего не говорит о

wminput -r -q 2>check >/dev/null &

Но ничего не устанавливается.

Есть ли другой способ отправить stderr в переменную?Или это уже отправлено в переменную, где я могу получить?

мой код (я знаю, это прямо сейчас бесконечный цикл):

x="1"
while [ "$x" == "1" ]; do
    wminput -r -q 2>&check >/dev/null &
    sleep 6s
    if [ "$(echo $check | grep -q 'No wiimotes found')" == "1" ] && [ "$(echo $check | grep -q 'unable to connect')" == "1" ]; then
        notify-send "Wiimote Connected!"
    else
        continue
    fi
done

Как я уже сказал, яхотел бы установить вывод stderr из wminput в переменную, не дожидаясь его выхода.Таким образом, если это займет слишком много времени, я могу предположить, что это удалось.Есть ли способ сделать это?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...