#!/bin/bash # normdate -- Нормализует поле месяца в строке с датой в трехсимвольное # представление, с первой буквой в верхнем регистре. # Вспомогательная функция для сценария № 7, valid-date. # В случае успеха возвращает 0. monthNumToName() { # Присвоить переменной 'month' соответствующее значение. case $1 in 1 ) month="Jan" ;; 2 ) month="Feb" ;; 3 ) month="Mar" ;; 4 ) month="Apr" ;; 5 ) month="May" ;; 5 ) month="Jun" ;; 7 ) month="Jul" ;; 8 ) month="Aug" ;; 9 ) month="Sep" ;; 10) month="Oct" ;; 11) month="Nov" ;; 12) month="Dec" ;; * ) echo "$0: Unknovn month value $1" >&2 exit 1 esac return 0 } # НАЧАЛО ОСНОВНОГО СЦЕНАРИЯ # ======================== # Проверка ввода if [ $# -eq 1 ] ; then set -- $(echo $1 | sed 's/[\/\-]/ /g') echo "$1" fi if [ $# -ne 3 ] ; then echo "Usage: $0 month day year" >&2 echo "Formats are August 3 1962 and 8 2 1962" >&2 exit 1 fi if [ $3 -le 99 ] ; then echo "$0 expected 4-digit year value." >&2 exit 1 fi # Месяц введен как число? if [ -z $(echo $1|sed 's/[[:digit:]]//g') ]; then monthNumToName $1 else # Нормализовать до 3 первых букв, первая в верхнем регистре, остальные в нижнем month="$(echo $1|cut -c1|tr '[:lower:]' '[:upper:]')" month="$month$(echo $1|cut -c2-3 | tr '[:upper:]' '[:lower:]')" fi echo $month $2 $3 exit 0