免费注册 查看新帖 |

Chinaunix

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

bash 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-19 11:59 |只看该作者 |倒序浏览
if [ DATE=$(date "+%F") -o `expr length $DATE` -eq 10 ]
then
   echo "$DATE"
fi
如何能实现上面的需求?谢谢!

我不把date赋值放在外面的原因是if还要测试别的表达式,通过后才能进行后面的测试。

论坛徽章:
0
2 [报告]
发表于 2008-05-19 12:03 |只看该作者
原帖由 fufeiwxy 于 2008-5-19 11:59 发表
if [ DATE=$(date "+%F") -o `expr length $DATE` -eq 10 ]
then
   echo "$DATE"
fi
如何能实现上面的需求?谢谢!

我不把date赋值放在外面的原因是if还要测试别的表达式,通过后才能进行后面的测试。


这样?

  1. if [ ]; then
  2.   if []; then
  3.   ...
  4.   fi
  5. fi
复制代码

论坛徽章:
0
3 [报告]
发表于 2008-05-19 12:06 |只看该作者
这个意思?

  1. if [ $(expr length $(date +%F)) -eq 10 ];then
  2.     echo $(date +%F)
  3. fi
复制代码

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
4 [报告]
发表于 2008-05-19 13:08 |只看该作者
原帖由 fufeiwxy 于 2008-5-19 11:59 发表
if [ DATE=$(date "+%F") -o `expr length $DATE` -eq 10 ]
then
   echo "$DATE"
fi
如何能实现上面的需求?谢谢!

我不把date赋值放在外面的原因是if还要测试别的表达式,通过后才能进行后面的测试。


如果DATE=$(date "+%F") ,那么`expr length $DATE`一定是10
因此直接 echo $(date "+%F")

论坛徽章:
0
5 [报告]
发表于 2008-05-19 13:29 |只看该作者
感谢楼上几位!
1、使用date +%F只是一个例子,实际上是通过awk对一个参数进行处理之后的值;不想重复处理;淡然重复处理的话就不会遇到上面的问题
2、之所以不用nested if是为了简单起见,比如:
      if []
      then
         echo "usage: ..."
         if []
            echo "usage:..."
         fi
       fi
     使用-o会比较简单

论坛徽章:
0
6 [报告]
发表于 2008-05-19 13:35 |只看该作者
程序是这样的:
#!/bin/bash

if [ $# -lt 3 ]
then
    echo "usage : $0 <maxAd Dir> <maxRate Dir> <maxUrl Dir>"
    echo  "    each dir name must end with date of the format of ymd without underscore."
    exit 1
fi
DATE=$(echo $1|awk -F_ '{print $NF}')
if [ `expr length $DATE` -ne 8 ]
then
    echo "usage : $0 <maxAd Dir> <maxRate Dir> <maxUrl Dir>"
    echo "    each dir name must end with date of the format of ymd without underscore."
    exit 1
fi

.....
(DATE下面还会用到)

[ 本帖最后由 fufeiwxy 于 2008-5-19 13:37 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-05-19 15:34 |只看该作者
还不如把这几句做成一个函数


  1. show_help_and_quit() {
  2.   echo "usage : $0 <maxAd Dir> <maxRate Dir> <maxUrl Dir>" >&2
  3.   echo "    each dir name must end with date of the format of ymd without underscore." >&2
  4.   exit 1
  5. }

  6. if [ $# -lt 3 ]; then
  7.   show_help_and_quit
  8. fi

  9. DATE=$(echo $1|awk -F_ '{print $NF}')
  10. if [ `expr length $DATE` -ne 8 ]; then
  11.   show_help_and_quit
  12. fi
  13. ...
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP