··#·· В случае успеха возвращает 0.
··monthNumToName()
··{
····# Присвоить переменной 'month’ соответствующее значение.
····case $1 in
······1) month="Jan";; 2) month="Feb";;
······3) month="Mar";; 4) month="Apr";;
······5) month="May";; 6) month="Jun";;
······7) month="Jul";; 8) month="Aug";;
······9) month="Sep";; 10) month="Oct";;
······11) month="Nov";; 12) month="Dec";;
······*) echo "$0: Unknown month value $1" >&2
········exit 1
····esac
····return 0
··}
··
··# НАЧАЛО ОСНОВНОГО СЦЕНАРИЯ — УДАЛИТЕ ИЛИ ЗАКОММЕНТИРУЙТЕ ВСЕ, ЧТО НИЖЕ,
··# ЧТОБЫ ЭТОТ СЦЕНАРИЙ МОЖНО БЫЛО ПОДКЛЮЧАТЬ К ДРУГИМ СЦЕНАРИЯМ.
··# =================
··# Проверка ввода
··if [$# −ne 3]; then
····echo "Usage: $0 month day year" >&2
····echo "Formats are August 3 1962 and 8 3 1962" >&2
····exit 1
··fi
··if [$3 −le 99]; then
····echo "$0: expected 4-digit year value." >&2
····exit 1
··fi
··# Месяц введен как число?
····monthNumToName $1
··else
··# Нормализовать до 3 первых букв, первая в верхнем регистре, остальные в нижнем.
··fi
··echo $month $2 $3
··exit 0
Как это работает
Обратите внимание на третий условный оператор в этом сценарии
Первая последовательность команд в подоболочке, в строке
Запуск сценария
Для максимальной гибкости будущих сценариев, использующих normdate, этот сценарий спроектирован так, что принимает исходные данные в виде трех аргументов командной строки, как показано в листинге 1.6. Если вы предполагаете использовать сценарий только интерактивно, предложите пользователю ввести дату в виде трех значений, однако это усложнит вызов normdate из других сценариев.
Результаты
Листинг 1.6. Тестирование сценария normdate
$ normdate 8 3 62
normdate: expected 4-digit year value.
$ normdate 8 3 1962
Aug 3 1962
$ normdate AUGUST 03 1962
Aug 03 1962
Обратите внимание, что этот сценарий нормализует только представление месяца; представление дня (в том числе с ведущими нулями) и года не изменяется.
Усовершенствование сценария
Прежде чем знакомиться с разными усовершенствованиями, которые можно добавить в этот сценарий, загляните в раздел с описанием сценария № 7, где используется normdate для проверки вводимых дат.