Re: [問題] date 輸出每個月的日期?
其實跟coldnew的版本很像 部份簡化後附上簡易說明 如下:
#!/bin/sh
if [[ $1 == "--help" ]]; then
echo
echo "usage:"
echo
echo " mday --help => display this message"
echo " mday => day of current month"
echo " mday 5 2011 => day of the 05/2011 "
echo
else
if [[ $1 == "" ]] || [[ $2 == "" ]]; then
echo `cal` | awk '{print $NF}'
else
echo `cal $1 $2` | awk '{print $NF}'
fi
fi
將以上文字儲存為 mday 並給予執行權限 chmod +x mday
使用方法:
mday 或 mday --help 查看說明
mday 查看目前月份之日數
mday 查看選定月份之日數
操作原理:
原本cal執行結果如下
五月 2011
日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
搭配 echo 使用 (即 echo `cal`) 可得到以下結果
五月 2011 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 \
19 20 21 22 23 24 25 26 27 28 29 30 31
原本的月曆變成了以空白為間隔的單行文字
最後使用 awk '{print $NF}' 將最後一個欄位取出
這時取得之文字 即為每個月的最後一天 也就是該月之日數
※ 引述《coldnew.bbs@bbs.ee.ndhu.edu.tw (後山的破壞者)》之銘言:
: ※ 引述《Xphenomenon.bbs@ptt.cc (啦 )》之銘言:
: > 請教一下,我知道 date 可以知道目前的時間日期以及前後天等這類的資訊,
: > 不知道它是否可以我給定它譬如: 2011年 2 月份,它會回傳給我 28 天;
: > 給他 2008 年 2 月,他會回傳給我 29 天。不知道是否可以實現?謝謝!
: 用以下指令可以搞定:
: cal `date '+%m'` `date '+%Y'` | grep . | fmt -1 | tail -1
: 若你想直接查詢某年某月
: example: 查詢 2008年2月
: cal 02 2008 | grep . | fmt -1 | tail -1
: 若寫成shell script的話:
: #!/bin/bash
:
: if [ "$1" = "" ]
: then YEAR=`date '+%Y'`
: else YEAR=$1
: fi
:
: if [ "$2" = "" ]
: then MONTH=`date '+%m'`
: else MONTH=$2
: fi
:
: DAY_IN_MONTH=`cal $MONTH $YEAR | grep . | fmt -1 | tail -1`
:
: echo "$YEAR/$MONTH has $DAY_IN_MONTH days"
:
: 假設你將這檔案存成 aa.sh
: 使用方法: ./aa.sh 2008 02
: 會得到 2008/02 has 29 days
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.3.16
→
05/28 10:18, , 1F
05/28 10:18, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):