我正在尝试在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
设置为变量,而不必等待其退出。这样,如果花费的时间太长,我可以认为它已经成功。有什么办法吗?
谢谢!