我需要创建一个while循环,该循环不断循环直到注册了按键,尤其是退出的“ q”键。
这是我的尝试(失败):
while [ -z "$QUIT" ]
do
<Script stuff>
done &
read -sn 1 QUIT
export QUIT
但是,如果按任意键,while循环不会退出/结束。这是因为$ QUIT似乎只能从其设置位置“向前”访问,而不能向后进入父while循环部分。有没有办法解决此问题,或者是一种替代方法,当按下某个键(如果可能的话)时,允许我的while循环退出?
干杯。
答案 0 :(得分:0)
我是这样做的:
while true
do
# Suck in characters until we timeout, collecting sequence
seq=
while IFS= read -s -n1 -t 0.01 key; do
[ "$key" = "" ] && key=" "
seq="${seq}${key}"
done
# Do whatever processing for seq
done
答案 1 :(得分:0)
这是一个显示如何杀死后台工作的示例
while true
do
echo "hello"
sleep 1
done &
while read -sn 1 QUIT && [[ $QUIT != 'q' ]];
do
echo "QUIT $QUIT"
done
# This kills the background job
kill %1