Validera input
re="^[0-9]+$"
read -r -p "Enter a digit: " digit
if [[ $digit =~ $re ]]
then
echo "$digit is a digit."
else
echo "$digit is NOT a digit."
fi
Det är operatorn =~
som talar om att vi vill använda ett reguljärt uttryck. Den fungerar om vi använder new test: dubbla [[
.
[[ string =~ pattern ]]
[0-9]+ matchar som bekant enbart numeriska värden 0-9 samt en eller flera gånger.
^ och $ ser till så det enbart är numeriska tecken från början till slut.
Ibland får man upp en prompt som ber användaren välja y eller n till exempel:
Are you sure? [y/N]
I de flesta fall är det ena alternativet med versaler och är det alternativ som väljs om man bara trycker Enter. Koden bakom valideringen kan se ut så här:
re="^[yY]|yes$"
read -r -p "Are you sure [y/N]: " answer
[[ $answer =~ $re ]] || exit 0
# The rest of the code...
Här kan användaren skriva in y, Y eller ordet yes. Gör man inte det så avslutas programmet.
#Revision history
- 2020-05-12: (A, lew) Första versionen.