루프 중 사용자 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를 처음 사용하기 때문에 명령이나 명령의 일부인 매개변수를 설명할 수 있다면 좋을 것입니다. 미리 감사드립니다

관련 정보