#!/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,那么秒就可以完美地运作。
这是一个错误,或者这里发生了什么?
答案 0 :(得分:1)
[0-23]并不意味着从0到23.它意味着从0到2和3.所以它匹配0,1,2和3.没有别的。
比较hourEntered> = 0和hourEntered<可能更简单。 24
或使用更复杂的正则表达式