我需要一些帮助。我操纵我的约会时陷入了编程困境。 日期格式为DD-MON-YY,如果用户输入正确的日期格式,我想检查它。所以我创建了一个单独测试日期,月份和年份的函数,但该函数也以格式读取“ - ”,所以我决定使用这段代码:
echo -n " Date [ DD-MON-YY ]:" #user will input the date
read dates
vardate=$ echo "$dates" | tr "-" " "
echo $vardate
我使用它,所以当我调用该函数时,“ - ”字符没有问题。 但现在的问题是如何保存日期的3个部分[日,月,年] ?? 所以我的功能可以正确评估它。
我的功能:
datefxn(){
d1 = $date1
d2 = $month1
d3 = $year1
########## check the DAY #####################
test ${#d1} -eq 2 || s=" INVALID!"
if [ "$d1" -gt 0 ] && [ "$d1" -le 31 ]
then
break ;;
else
echo "Month is OUT OF RANGE!"
fi
########## check the DAY #####################
test ${#d2} -eq 3 || s=" INVALID!"
MONTH=(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
echo "${MONTH[@]}"
for element in "${MONTH[@]}"
do
if [[ $element == $d2 ]]
then
echo " a "
break
else
echo " WAAA "
fi
done
########## check the YEAR #####################
test ${#d3} -eq 2 || s=" INVALID!"
} #end datefxn()
答案 0 :(得分:1)
这样的事情:
#!/bin/bash
datefxn () {
d1=$1
d2=$2
d3=$3
echo "Date is $d1"
echo "Month is $d2"
}
inp='24-12-2004';
vardate=$(echo "$inp" | tr "-" " ")
datefxn $vardate
以上解决方案用于修复代码。
<强>更新强>: 更好的方法就是使用数组和就地替换:
#!/bin/bash
datefxn () {
dt=($(echo ${1//-/ }))
echo "Date is ${dt[0]}"
echo "Month is ${dt[1]}"
echo "Year is ${dt[2]}"
}
inp='24-12-2004';
datefxn "$inp"