В функции решается задача как определить количество дней в месяце:
Необязательные параметры [месяц [год]]days_in_month(){
[ "$#" == "2" ] && date -d "$1/01/$2 +1month -1day" +%d
[ "$#" == "1" ] && days_in_month $1 `date +%Y`
[ "$#" == "0" ] && days_in_month `date +'%m %Y'`
}Или, - односторчник - если нужно узнать количество дней в текущем месяце
date -d "`date +'%m/01'`+1month -1day" +%dURL:
Обсуждается: http://www.opennet.me/tips/info/1829.shtml
Гы!
#calпоследнее число и есть дней в месяце :)
Давайте другую - Определение даты перехода на летнее/зимнее время - чем короче, тем КРУЧЕ (можно на ASM_e) :)
..В некоторых странах, например в Бразилии, нет фиксированной даты начала летнего времени. Она определяется каждый год, за несколько месяцев до начала лета..
[http://www.opennet.me/base/sys/date_and_time.txt.html]
Дык, у нас тоже не фиксирована!
осенью знать будет так:
cal -m 10 2008 | perl -ne '/^\d*(\s\d*){6}\n$/;$&=~/\d\d\n/;print $&' | tail -1
а весной
cal -m 3 2008 | perl -ne '/^\d*(\s\d*){6}\n$/;$&=~/\d\d\n/;print $&' | tail -1
Это не интересно, функцию давай!!!
Уравнения Гаусса для определения Пасхи знаете, вот что-то подобное...
Во, что я нашел ;-)
http://www.canto.ru/calendar/easter.php?year1=2000&year2=301...
http://megalib.com/books/27/html/algoritm/data/data1.htm
cal | xargs | sed "s/ /\n/g" | tail -n 1
>cal | xargs |Богато! :)
> sed "s/ /\n/g"
Здесь обычно %) используют tr " " "\n"
> | tail -n 1
$ cal|xargs|awk '{print $NF}'
30
$ cal|awk -v RS="\f" '{print $NF}'
30
$ # ;-)
$ _...:))))))
$ x() { date -d "${1:-`date +%Y`}/${2:-`date +%m`}/01 +1month -1day" +%d; }
$ x
30
$ x 2007
30
$ x 2007 1
31
$ x 2007 2
28
$ x "" 2
29
$ _
Да, в линухе к одному и тому же результату можно дойти сотней разных путей. :)
>Да, в линухеВообще-то это--vvv ~~девиз Perl-а: google.ru/search?q=timtowtdi
>к одному и тому же результату можно дойти сотней разных путей. :)
...?q="More+Than+One+Way"+unix
А я не 1001-ый способ решения конкретной задачи показывал, а... ну, скажем, 101-ый способ применения shell-инструментария. Возможно, кому-то интересно было. ...кроме :D меня. Хотя, может, оно и стало менее читаемым и менее удобным для поддержки.
'==' это башизм. Не рекомендую.
# uname -r
7.2-RELEASEdate -v1d -v`date -v +1m +%m`m -v-1d +%d
Только кавычки левые должны быть, какое-о автоформатирование сработало...