gpt4 book ai didi

bash - 在 bash 的无限循环期间禁用用户输入

转载 作者:行者123 更新时间:2023-11-29 08:56:18 25 4
gpt4 key购买 nike

我有这个 bash 脚本,它基本上启动带有进度指示器的 web 和 selenium 服务器。由于 selenium 服务器启动需要一些时间,因此我正在无限循环中检查状态。

问题是,在等待它启动时,我不小心按下了键,它显示在屏幕上,如果循环结束(超时),它也会显示在命令提示符中。

我想在循环内禁用所有用户输入(当然除了控制键):

start_selenium() {
echo -n "Starting selenium server"
java -jar ${selenium_jar} &> $selenium_log &

# wait for selenium server to spin up! (add -v for verbose output)
i=0
while ! nc -z localhost 4444; do
sleep 1
echo -n "."
((i++))
if [ $i -gt 20 ]; then
echo
echo -e $bg_red$bold"Selenium server connection timed out"$reset
exit 1
fi
done
}

最佳答案

stty 调用来自 http://www.unix.com/shell-programming-and-scripting/84624-nonblocking-i-o-bash-scripts.html

这仍然遵循 Ctrl-C,但不显示输入并使用它,因此它不会留给 shell。

#!/bin/bash

hideinput()
{
if [ -t 0 ]; then
stty -echo -icanon time 0 min 0
fi
}

cleanup()
{
if [ -t 0 ]; then
stty sane
fi
}

trap cleanup EXIT
trap hideinput CONT
hideinput
n=0
while test $n -lt 10
do
read line
sleep 1
echo -n "."
n=$[n+1]
done
echo

关于bash - 在 bash 的无限循环期间禁用用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com