Re: [問題] date 輸出每個月的日期?

看板Linux作者 (沒)時間14年前 (2011/05/26 22:24), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/4 (看更多)
其實跟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
文章代碼(AID): #1DtcAeW7 (Linux)
文章代碼(AID): #1DtcAeW7 (Linux)