Home > front end >  How to stop echoing on terminal while script is in loop
How to stop echoing on terminal while script is in loop

Time:07-02

I made a script which has allot of loops hence it has short timedelay to Output results. but while the script is in loop, whenever i enter any key on my keyboard it just mess the beauty of Outputs.

A short part of my script goes like this~

#!/usr/bin/bash

echo -e "Moved File to /bin"

## until this loop ends, whenever i INPUT anything from my KEYBOARD it just print on terminal
while true; do
    sleep 1
    [[ -f *.txt ]] && rm *.txt 2>/dev/null || break 
done

echo -e "Done"

Now here The Terminal Must Output this~

Moved File to /bin
Done

But if I Press UP-ARROW on my KEYBOARD While The Script Still in Loop, The Terminal...~

Moved File to /bin
^[[A^[[A^[[A^[[A^[[A^[[A
Done

Hope Your got my Problem.

A way to disable USER INPUT while a Script is running or any other alternative method to accomplish the same would be helpful. Thankyou

CodePudding user response:

In my piu-piu project I'm switching user input on and off like this:

...
COF='\e[?25l' #Cursor Off
CON='\e[?25h' #Cursor On

cursor () {
    case $1 in
         on) stty  echo; printf "$CON";;
        off) stty -echo; printf "$COF";;
    esac
}
...

cursor on
cursor off
...
  • Related