在循环期间禁用用户 I/O(暂时)

在循环期间禁用用户 I/O(暂时)

我有一个 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 的新手,所以如果你能解释任何属于命令的命令或参数,那就太棒了。提前致谢

相关内容