正则表达式没有按预期的数字" 4"

时间:2017-04-25 13:45:50

标签: regex bash shell

#!/bin/bash

hour="hour"                                 #variable which holds the string for hour
min="min"                                     #variable which holds the string for min
minValue="4"
hourValue="4"

hourEntered="4"
minEntered="4"
###########
# hour    #
###########
if [ ! "$hourEntered" ];  then
  hourValue=$hourValue
  echo "you did not enter an hour"
  #if the user did input the correct values take them over
  #value to be entered 0 or 23....
elif [[ "$hourEntered" =~ ^[0-23]+$ ]]; then
  hourValue=$hourEntered
  echo "you entered for hourEntered:$hourEntered"
  #else provide a message and provide help....
else
  #set the read out values
  hourValue=$hourValue
fi
###########
# min     #
###########
#check if a value was entered if not take the read out values over
if [ ! "$minEntered" ];  then
  minValue=$minValue
  echo "you did not enter an min"
  #if the user did input the correct values take them over
  #value to be entered 0 or 60....
elif [[ "$minEntered" =~ ^[0-59]+$ ]]; then
  minValue=$minEntered
  echo "you entered for minEntered:$minEntered"
  #else provide a message and provide help....
else
  #set the read out values
  minValue=$minValue
fi

所以有一些奇怪的事情,显然是声明

[[ "$hourEntered" =~ ^[0-23]+$ ]];

不起作用,找不到值4。如果你像这样将它改为0-59,那么秒就可以完美地运作。

这是一个错误,或者这里发生了什么?

1 个答案:

答案 0 :(得分:1)

[0-23]并不意味着从0到23.它意味着从0到2和3.所以它匹配0,1,2和3.没有别的。

比较hourEntered> = 0和hourEntered<可能更简单。 24

或使用更复杂的正则表达式