剪切并保存Shell脚本

时间:2013-01-02 07:55:59

标签: shell

我需要一些帮助。我操纵我的约会时陷入了编程困境。 日期格式为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()

1 个答案:

答案 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"