我尝试为Bash创建一个正则表达式验证,并且已经这样做了。它只适用于第一个数字,第二个数字没有。你能帮帮我吗?
while [[ $usrInput =~ [^[1-9]|[0-2]{1}$] ]]
do
echo "This is not a valid option. Please type an integer between 1 and 12"
read usrInput
done
答案 0 :(得分:0)
您无法嵌套范围。你想要像
这样的东西while ! [[ $usrInput =~ ^[0-9]|11|12$ ]]; do
尽管通常以数字方式比较数字字符串会更简单:
min=1
max=12
until [[ $usrInput =~ ^[0-9]+$ ]] &&
(( usrInput >= min && usrInput <= max )); do
答案 1 :(得分:0)
我相信你(或bash)没有正确地对表达式进行分组。无论哪种方式,这都可行:
while read usrInput
do
if [[ "$usrInput" =~ ^([1-9]|1[0-2])$ ]]
then
break
else
echo "Number not between 1 and 12"
fi
done