免费注册 查看新帖 |

Chinaunix

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

[学习共享] if 判断文件是否存在? [复制链接]

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-12 14:16 |只看该作者 |倒序浏览
#!/bin/bash
DAT=`find *.DAT -mtime 0`
MP="66208"

if [ -e "$DAT" ]; then
  ACC=`account -tf $DAT |awk '{print $4}'|sed -r '/66208/!d;s/.*(6620.*/\1/'`
  if [[ "$ACC" == "$MP" ]]
  then
  echo "ok"
  else
  echo "no"
  fi
else
echo "Files is not es"
fi

echo $DAT
TXXXXXXX1.DAT TXXXXXXX2.DAT

./aa
Files is not es

有文件的,为什么返回是错误的?哪里写的不对?

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
2 [报告]
发表于 2016-03-12 14:40 |只看该作者
[ -n "$DAT" ]@johnson0418

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
3 [报告]
发表于 2016-03-12 18:37 |只看该作者
回复 2# cao627
  1. ./aa
  2. no

  3. vi aa

  4. #!/bin/bash
  5. DAT=`find *.DAT -mtime 0`
  6. MP="66208"

  7. if [ -n "$DAT" ]; then
  8.   ACC=`accview -tf $DAT |awk '{print $4}'|sed -r '/66208/!d;s/.*(66208).*/\1/'`
  9.   if [ "$ACC" = "$MP" ]
  10.   then
  11.   echo "ok"
  12.   else
  13.   echo "no"
  14.   fi
  15. else
  16. echo "Files is not es"
  17. fi


  18. echo $DAT     
  19. TAXAWVPW1.DAT TAXAWVPW2.DAT
  20. echo $ACC
  21. 66208 66208


  22. 问题出if那,因为$ACC会有两个66208出来。要怎么改?
复制代码

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
4 [报告]
发表于 2016-03-12 19:37 |只看该作者
DAT=`find *.DAT -mtime 0`

有可能獲得多个结果,判断是否有结果就可以了

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
5 [报告]
发表于 2016-03-12 20:21 |只看该作者
回复 4# yjh777


    那我要怎么改进?

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
6 [报告]
发表于 2016-03-12 20:24 |只看该作者
johnson0418 发表于 2016-03-12 20:21
回复 4# yjh777


二楼给答案了

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
7 [报告]
发表于 2016-03-12 20:26 |只看该作者
回复 6# yjh777


    我在3楼回复了,执行./aa时,返回no。

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
8 [报告]
发表于 2016-03-12 20:59 |只看该作者
解决了!!!谢谢参与。
不知道谁还有好的方法。

#!/bin/bash
DAT=`find *.DAT -mtime 0`
MP="66208"

if [ -n "$DAT" ]; then
  ACC=`accview -tf $DAT |awk '{print $4}'|sed -r '/66208/!d;s/.*(6620.*/\1/'`
echo $ACC|grep -e $MP
if [ $? -eq 0 ]; then
    echo "yes"
else
    echo "no"
fi
else
echo "FILE is not ex"
fi

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
9 [报告]
发表于 2016-03-13 16:42 |只看该作者
  1. ACC=`accview -tf $DAT |awk '{print $4}'| sed -nr 's/.*(66208).*/\1/p;q'`
复制代码
@johnson0418
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP