Reputation: 33
I'm writing Bash script that requires you to enter numbers only. How do I prevent non-numbers from being displayed as they are typed? For example, if I type 123ab45c6
at the prompt, only 123456
should be appear on the screen.
Upvotes: 3
Views: 66
Reputation: 4648
#/bin/bash
echo "Please enter a number"
# variable to store the input
number=""
# reading in silent mode character by character
while read -s -n 1 c
do
case $c in
[0-9])
# if the read character is digit add it to the number and print the number
number="${number}${c}"
echo -en "\r${number}"
;;
'')
# break on ENTER
echo
break;;
esac
done
echo "You entered a number ${number}"
Upvotes: 2