我有一个 shell 脚本来备份我的 git 存储库,这些存储库全部保存在一个特定文件中。我想添加一个很酷的“旋转负载东西”只是为了好玩,这非常简单。问题是我意识到我仍然可以在加载时向终端输入输入,更糟糕的是我仍然可以输入命令。您可以在我的上找到备份脚本GitHub 页面在这里或者这是下面的大部分代码。
function runCommand() {
load &
local whilePID=$!
tar -czf ${zipFileToUpdate} ${directoryToBackUp} &
local backupPID=$!
wait $backupPID
kill $whilePID
echo -ne "done"
}
function load() {
while true; do
echo -ne "/\r"
sleep .1
echo -ne "-\r"
sleep .1
echo -ne "\ \r"
sleep .1
echo -ne "|\r"
sleep .1
done
}
stty -echo # stop input
tput civis # cursor invisible
runCommand # main func
tput cnorm # cursor norm
stty echo # resume input
我从在加载循环运行时能够连续键入的问题开始,stty -echo
我让它停止,但一旦我再次打开输入,它们就会全部显示出来。因此,如果我按向上箭头并输入,它只会等到完成,然后显示脚本再次运行。如果有人知道如何捕获输入而不是隐藏输入,那就太好了!
我也是 bash 的新手,所以如果你能解释任何属于命令的命令或参数,那就太棒了。提前致谢