我试图找出如何在显示图像的同时不在shell脚本中失去焦点。用户输入可能随时出现,但看到拍摄的照片似乎很重要。
要澄清,我输出图像没有问题。显示工作正常,动画,和feh等。我需要的是,shellcript仍然处理用户输入(在此示例中,“t”),同时显示最后拍摄的图像,时间不确定。
我在Linux中用bash写作。
以下是我正在尝试的一个例子:
#!/bin/bash
i=0
capture() {
cd ~/Desktop/ani
streamer -c /dev/video0 -s 800x600 -o outfile$i.jpeg
display outfile$i.jpeg &
let i++
}
while true; do
#clear
read -rsn1 input
if [ "$input" = "t" ]; then
capture
else
exit
fi
done
在实际的脚本中,我可能会继续拍照,所以我想继续收听用户输入。我可以想象有几种方法可以做到这一点,但我无法弄明白。
答案 0 :(得分:2)
继续收听用户输入。你可以这样做
while true; do
#clear
read -p "Your input: " input
if [ "$input" == "t" ]; then
capture
fi
done
答案 1 :(得分:0)
解决此问题的一种相当丑陋的方法:安装实用程序wmctrl
(在debian / Ubuntu中,sudo apt-get install wmctrl
)。然后,在display
命令后,添加:
sleep 1
wmctrl -i -a "$WINDOWID"
这将睡眠一秒钟(留出一些时间到display
命令完成加载 - 将此值调整到适合你的任何东西)。然后,wmctrl
将使用变量WINDOWID
的值(希望由终端模拟器设置)作为数值(-i
)并提升窗口并使其成为焦点({ {1}})。