Поскольку вы имеете дело с довольно статической частью информации (, за исключением дополнительных вложенных событий ), просто используйте встроенные -в командах оболочки:
function capdate() {
case "$1" in
(01) printf "JAN";;
(02) printf "FEB";;
(03) printf "MAR";;
(04) printf "APR";;
(05) printf "MAY";;
(06) printf "JUN";;
(07) printf "JUL";;
(08) printf "AUG";;
(09) printf "SEP";;
(10) printf "OCT";;
(11) printf "NOV";;
(12) printf "DEC";;
(*) printf "invalid"; return 1;;
esac
}
Пробный запуск:
$ m=$(capdate 01); echo $?, $m
0, JAN
$ m=$(capdate Caesar); echo $?, $m
1, invalid
Измените текст, если в вашей локали другие date +%b
названия.
Другое решение с использованием awk
date -d "20170711" | date +"%b" | awk '{print toupper($0)}'
^ use upper case if possible
Результат:
$ date +%^b
JUL
Бонус :как я получил этот ответ:
мужчина дата Введите /кейс Введите п
date -d '20170711' '+%^b'
и date -d '20170711' '+%b' | tr '[:lower:]' '[:upper:]'
работают хорошо.
Это также можно сделать с помощью расширения параметра:
$ month=$(date -d '20170711' '+%b')
$ echo "${month^^}"
JUL