ループ中のユーザーI / Oを無効にする(一時的に)

ループ中のユーザーI / Oを無効にする(一時的に)

特定のファイルにすべて保存された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たが、入力を再びオンにするとすぐに表示されます。したがって、上矢印を押してEnterを押すと、完了するまで待ってから再実行するスクリプトが表示されます。入力を隠すのではなく、キャプチャする方法を知っている人がいればいいでしょう!

私はbashを初めて使用するので、コマンドまたはコマンドの一部であるパラメータを説明できると思います。事前にありがとう

ベストアンサー1

おすすめ記事