从stderr异步设置变量

时间:2019-02-16 17:50:01

标签: bash variables asynchronous

我正在尝试在bash脚本中运行命令(wminput),并将其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设置为变量,而不必等待其退出。这样,如果花费的时间太长,我可以认为它已经成功。有什么办法吗?

谢谢!

0 个答案:

没有答案