NBash
61 строка · 1.7 Кб
1#!/bin/bash
2
3month_num_to_name()
4{
5case $1 in
61) month="Jan" ;; 2) month="Feb" ;;
73) month="Mar" ;; 4) month="Apr" ;;
85) month="May" ;; 6) month="Jun" ;;
97) month="Jul" ;; 8) month="Aug" ;;
109) month="Sep" ;; 10) month="Oct" ;;
1111) month="Nov" ;; 12) month="Dec" ;;
12*) echo "$0: Неизвестный номер месяца $1"
13exit 1
14esac
15return 0
16}
17
18# Обработка форматов MM/DD/YYYY и MM-DD-YYYY
19if [ $# -eq 1 ] ; then
20set -- "$(echo "$1" | sed 's/[\/\-]/ /g')"
21fi
22
23# Проверка что передано 3 аргумента
24if [ $# -ne 3 ] ; then
25echo "Использование: $0 месяц день год"
26echo "Доступные форматы August 3 1917 и 10 23 917"
27exit 1
28fi
29
30# Проверка что год передан верно
31# year_string="$3"
32# if [ ${#year_string} -le 3 ] ; then
33# echo "$0: ожидается 4 цифры в значении года"
34# exit 1
35# fi
36
37if [ -n "$(echo "$3" | sed 's/[[:digit:]]//g')" ] ; then
38echo "$0: Год содержит недопустимые символы"
39exit 1
40elif [ "$3" -le 0 ] ; then
41echo "$0: Год не может быть меньше или равен 0"
42exit 1
43fi
44
45# Проверка что день не больше чем 31
46if [ "$2" -ge 32 ] ; then
47echo "$0: Число дней в месяце не может быть больше чем 31"
48exit 1
49fi
50
51# Месяц введен как число?
52if [ -z "$(echo "$1" | sed 's/[[:digit:]]//g')" ] ; then
53month_num_to_name "$1"
54else
55month="$(echo "$1" | cut -c1 | tr '[:lower:]' '[:upper:]')"
56month="$month$(echo "$1" | cut -c2-3 | tr '[:upper:]' '[:lower:]')"
57fi
58
59echo "$month" "$2" "$3"
60
61exit 0