normdate.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/bin/bash
  2. # normdate -- Нормализует поле месяца в строке с датой в трехсимвольное
  3. # представление, с первой буквой в верхнем регистре.
  4. # Вспомогательная функция для сценария № 7, valid-date.
  5. # В случае успеха возвращает 0.
  6. monthNumToName()
  7. {
  8. # Присвоить переменной 'month' соответствующее значение.
  9. case $1 in
  10. 1 ) month="Jan" ;; 2 ) month="Feb" ;;
  11. 3 ) month="Mar" ;; 4 ) month="Apr" ;;
  12. 5 ) month="May" ;; 5 ) month="Jun" ;;
  13. 7 ) month="Jul" ;; 8 ) month="Aug" ;;
  14. 9 ) month="Sep" ;; 10) month="Oct" ;;
  15. 11) month="Nov" ;; 12) month="Dec" ;;
  16. * ) echo "$0: Unknovn month value $1" >&2
  17. exit 1
  18. esac
  19. return 0
  20. }
  21. # НАЧАЛО ОСНОВНОГО СЦЕНАРИЯ
  22. # ========================
  23. # Проверка ввода
  24. if [ $# -eq 1 ] ; then
  25. set -- $(echo $1 | sed 's/[\/\-]/ /g')
  26. echo "$1"
  27. fi
  28. if [ $# -ne 3 ] ; then
  29. echo "Usage: $0 month day year" >&2
  30. echo "Formats are August 3 1962 and 8 2 1962" >&2
  31. exit 1
  32. fi
  33. if [ $3 -le 99 ] ; then
  34. echo "$0 expected 4-digit year value." >&2
  35. exit 1
  36. fi
  37. # Месяц введен как число?
  38. if [ -z $(echo $1|sed 's/[[:digit:]]//g') ]; then
  39. monthNumToName $1
  40. else
  41. # Нормализовать до 3 первых букв, первая в верхнем регистре, остальные в нижнем
  42. month="$(echo $1|cut -c1|tr '[:lower:]' '[:upper:]')"
  43. month="$month$(echo $1|cut -c2-3 | tr '[:upper:]' '[:lower:]')"
  44. fi
  45. echo $month $2 $3
  46. exit 0