ksh получить даты окончания квартала

Похоже, что информация действительно не легко найти - архитектура, которая вам нужна, это amd64 . Исчерпывающая информация о различных архитектурах, поддерживаемых в Debian, доступна на странице портов Debian .

1
05.05.2017, 16:45
1 ответ

С ksh93 (также /bin/sh в Solaris 11):

#! /usr/bin/ksh
eval "$(printf '%(y=%Y m=%-m)T')"
first=$(printf '%(%F)T' "$y-$(((m-1)/3*3+1))-1")
last=$(printf '%(%F)T' "$first next 2 months last day")
echo "$first $last"

first2=$(printf '%(%F)T' "$first last 3 months")
last2=$(printf '%(%F)T' "$first2 next 2 months last day")
echo "$first2 $last2"

Пример:

$ ./quarter
2017-04-01 2017-06-30
2017-01-01 2017-03-31
$ faketime 2017-01-31 ./quarter
2017-01-01 2017-03-31
2016-10-01 2016-12-31

Используя ваш подход, это будет:

eval "$(date +'y=%Y m=%m')"
case $m in
  (0[1-3])
     echo "$y-01-01 $y-03-31"
     echo "$((y-1))-10-01 $((y-1))-12-31";;
  (0[4-6])
     echo "$y-04-01 $y-06-30"
     echo "$y-01-01 $y-03-31";;
  (0[7-9])
     echo "$y-07-01 $y-09-30"
     echo "$y-04-01 $y-06-30";;
  (*)
     echo "$y-10-01 $y-12-31"
     echo "$y-07-01 $y-09-30"
esac

В любом случае обратите внимание, что синтаксис присвоения переменных в Bourne-подобных оболочках:

var=value

Нет пробела по обе стороны от =.

2
27.01.2020, 23:33

Теги

Похожие вопросы