免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 6066 | 回复: 44
打印 上一主题 下一主题

大家能贴一下你用过后觉得好的,有意思的函数吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-23 19:23 |只看该作者 |倒序浏览
大家共享一下,让我们这些新手也能长长见识

论坛徽章:
0
2 [报告]
发表于 2003-06-23 19:43 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

波斐那契数列

  1. abc()
  2. {
  3.         num=$1
  4.         [ $num -lt 1 ] && echo 0 && return
  5.         [ $num -eq 1 -o $num -eq 2 ] && echo 1 && return
  6.         tmp1=`expr $num - 1`
  7.         tmp2=`expr $num - 2`
  8.         num1=`abc $tmp1`
  9.         num2=`abc $tmp2`
  10.         num=`expr $num1 + $num2`
  11.         echo $num && return
  12. }
  13. read n
  14. count=`abc $n`
  15. echo $count
复制代码



~      

     取某日为星期几

  1. #usage: command yyyymmdd
  2. str=$1
  3. yy=`echo $str|cut -c 1-4`
  4. mm=`echo $str|cut -c 5-6`
  5. dd=`echo $str|cut -c 7-8`
  6. expr $dd : 0. > /dev/null && dd=`echo $dd|cut -c 2-2`
  7. aaa=`eval cal $mm $yy|grep " 20 "|cut -c 1-2`
  8. dd=`expr \( $dd - $aaa \) \% 7`
  9. [ $dd -lt 0 ] && dd=`expr $dd + 7`
  10. echo $dd
  11. ~  
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-06-24 04:56 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

...

不错呀,顶。

论坛徽章:
0
4 [报告]
发表于 2003-06-24 08:05 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

[quote]原帖由 "nkliyong"][/quote 发表:
     
波斐那契数列波斐那契 的弟弟??
还是一个新出道的数学家啊?哈哈哈哈~~

论坛徽章:
0
5 [报告]
发表于 2003-06-24 08:52 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

原帖由 "anonimousboy" 发表:
的弟弟??
还是一个新出道的数学家啊?哈哈哈哈~~
   

偶享乐半天才想出这么个名字.

论坛徽章:
0
6 [报告]
发表于 2003-06-24 09:08 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

取某月的最后一天的函数,忘记从那儿转的了,也可能就是这儿,大家不要笑啊
#!/bin/sh
lastdate()
{
    DateString=$1 #取得输入参数的值
    Year=`echo $DateString | cut -b 1-4`
    Month=`echo $DateString | cut -b 5-6`
   
    #下面是取得上个月月份的代码
    #if [ $Month -eq 1 ]; then
    #    Month=12
    #    Year=`expr $Year - 1`
    #else
    #    Month=`expr $Month - 1`
    #fi

    Cal=`cal $Month $Year`
    LastDay=`echo $Cal | awk '{print $NF}'`
    echo "$Year/$Month/$LastDay"
}

论坛徽章:
0
7 [报告]
发表于 2003-06-24 09:28 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

旧话重提

  1. #计算某日前若干天的日期
  2. #date=YYYYMMDD
  3. #Usage:command date days
  4. str=$1
  5. days=$2
  6. yy=`echo $str|cut -c 1-4`
  7. mm=`echo $str|cut -c 5-6`
  8. dd=`echo $str|cut -c 7-8`
  9. sav_dd=$days
  10. days=`expr $days - $dd`
  11. while [ $days -ge 0 ]
  12. do
  13.         mm=`expr $mm - 1`
  14.         [ $mm -eq 0 ] && mm=12 && yy=`expr $yy - 1`
  15.         aaa=`cal $mm $yy`
  16.         bbb=`echo $aaa|awk '{print $NF}'`
  17.         days=`expr $days - $bbb`
  18. done
  19. dd=`expr 0 - $days`
  20. expr $dd : "^.$" > /dev/null && dd=0$dd
  21. expr $mm : "^.$" > /dev/null && mm=0$mm
  22. echo $yy$mm$dd
复制代码



  1. #计算某日后若干天日期
  2. #date=YYYYMMDD
  3. #Usage:command date days
  4. str=$1
  5. days=$2
  6. yy=`echo $str|cut -c 1-4`
  7. mm=`echo $str|cut -c 5-6`
  8. dd=`echo $str|cut -c 7-8`
  9. days=`expr $days + $dd`
  10. while [ $days -gt 0 ]
  11. do
  12.         aaa=`cal $mm $yy`
  13.         bbb=`echo $aaa|awk '{print $NF}'`
  14.         sav_dd=$days
  15.         sav_mm=$mm
  16.         sav_yy=$yy
  17.         days=`expr $days - $bbb`
  18.         mm=`expr $mm + 1`
  19.         [ $mm -gt 12 ] && mm=1 && yy=`expr $yy + 1`
  20. done
  21. sav_dd=`printf "%02d" $sav_dd`
  22. sav_mm=`printf "%02d" $sav_mm`
  23. echo $sav_yy$sav_mm$sav_dd
复制代码



  1. #计算前一天日期
  2. aaa=`echo $TZ|sed 's/.*\(..\)/\1/'`
  3. aaa=`expr $aaa + 24`
  4. eval aaa=`echo $TZ|sed 's/..$/+$aaa/'`
  5. TZ=$aaa
  6. export TZ
  7. yy=`date +%y`
  8. mm=`date +%m`
  9. dd=`date +%d`
  10. echo $mm$dd$yy
复制代码



  1. #取上月末日期
  2. get_lastday_of_lastmonth()
  3. {
  4. yy=`date +%Y`
  5. mm=`date +%m-1|bc`
  6. [ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1`
  7. aaa=`cal $mm $yy`
  8. dd=`echo $aaa|awk '{print $NF}'`
  9. echo $yy$mm$dd
  10. }  
复制代码


  1. #计算两个日期间有多少天
  2. #date1,date2:yyyymmdd
  3. #Usage:command date1 date2
  4. str=$1
  5. yy1=`echo $str|cut -c 1-4`
  6. mm1=`echo $str|cut -c 5-6`
  7. dd1=`echo $str|cut -c 7-8`
  8. str=$2
  9. yy2=`echo $str|cut -c 1-4`
  10. mm2=`echo $str|cut -c 5-6`
  11. dd2=`echo $str|cut -c 7-8`
  12. count_day=`expr $dd2 - $dd1`
  13. while [ $yy2 -ne $yy1 -o $mm2 -ne $mm1 ]
  14. do
  15.         mm2=`expr $mm2 - 1`
  16.         [ $mm2 -eq 0 ] && mm2=12 && yy2=`expr $yy2 - 1`
  17.         aaa=`cal $mm2 $yy2`
  18.         bbb=`echo $aaa|awk '{print $NF}'`
  19.         count_day=`expr $count_day + $bbb`
  20. done
  21. echo $count_day
  22. ~               
复制代码


  1. #计算某日后一天日期
  2. #date=YYYYMMDD
  3. #Usage:command date
  4. next_day()
  5. {
  6. [ $mm -eq 12 -a $dd -eq 31 ] && mm=1 && dd=1 && yy=`expr $yy + 1` && ret
  7. urn
  8. aaa=`cal $mm $yy`
  9. bbb=`echo $aaa|awk '{print $NF}'`
  10. [ $dd -eq $bbb ] && mm=`expr $mm + 1` && dd=1 && return
  11. dd=`expr $dd + 1`
  12. }
  13. str=$1
  14. yy=`echo $str|cut -c 1-4`
  15. mm=`echo $str|cut -c 5-6`
  16. dd=`echo $str|cut -c 7-8`
  17. next_day
  18. expr $dd : "^.$" > /dev/null && dd=0$dd
  19. expr $mm : "^.$" > /dev/null && mm=0$mm
  20. echo $yy$mm$dd
复制代码


  1. #计算unix时间戳
  2. #Usage:command
  3. #太慢
  4. str="19700101"
  5. yy1=`echo $str|cut -c 1-4`
  6. mm1=`echo $str|cut -c 5-6`
  7. dd1=`echo $str|cut -c 7-8`
  8. str=`date +%Y%m%d`
  9. yy2=`echo $str|cut -c 1-4`
  10. mm2=`echo $str|cut -c 5-6`
  11. dd2=`echo $str|cut -c 7-8`
  12. count_day=`expr $dd2 - $dd1`
  13. while [ $yy2 -ne $yy1 -o $mm2 -ne $mm1 ]
  14. do
  15.         mm2=`expr $mm2 - 1`
  16.         [ $mm2 -eq 0 ] && mm2=12 && yy2=`expr $yy2 - 1`
  17.         aaa=`cal $mm2 $yy2`
  18.         bbb=`echo $aaa|awk '{print $NF}'`
  19.         count_day=`expr $count_day + $bbb`
  20. done
  21. str1=`date +%H*3600|bc`
  22. str2=`date +%M*60|bc`
  23. str3=`date +%S|bc`
  24. count_time=`expr $count_day \* 24 \* 3600 + $str1 + $str2 + $str3`
  25. echo $count_time
复制代码


  1. #取某日是星期几
  2. #usage: command yyyymmdd
  3. str=$1
  4. yy=`echo $str|cut -c 1-4`
  5. mm=`echo $str|cut -c 5-6`
  6. dd=`echo $str|cut -c 7-8`
  7. expr $dd : 0. > /dev/null && dd=`echo $dd|cut -c 2-2`
  8. aaa=`eval cal $mm $yy|grep " 20 "|cut -c 1-2`
  9. dd=`expr \( $dd - $aaa \) \% 7`
  10. [ $dd -lt 0 ] && dd=`expr $dd + 7`
  11. echo $dd
复制代码

论坛徽章:
0
8 [报告]
发表于 2003-06-24 09:28 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

cal | awk '{print $NF}' | tail -2
嘿嘿,CHINAUNIX上以前好象有过这个讨论,但是 我忘记了,上边的也能找出每个月有多少天~~如果想找出那年那月有多少天在CAL后边加上参数就好了~~

论坛徽章:
0
9 [报告]
发表于 2003-06-24 13:50 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

顶一下

论坛徽章:
0
10 [报告]
发表于 2003-06-24 16:29 |只看该作者

大家能贴一下你用过后觉得好的,有意思的函数吗?

原帖由 "anonimousboy"]波斐那契数列波斐那契[/color 发表:
的弟弟??
还是一个新出道的数学家啊?哈哈哈哈~~
   

斐波那契数列 (Fibonacci Series)...

反正蓝裤脚经常写错别字,偶们都习惯辣!   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP