Chinaunix

标题: if 判断文件是否存在? [打印本页]

作者: johnson0418    时间: 2016-03-12 14:16
标题: if 判断文件是否存在?
#!/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

有文件的,为什么返回是错误的?哪里写的不对?
作者: cao627    时间: 2016-03-12 14:40
[ -n "$DAT" ]@johnson0418
作者: johnson0418    时间: 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出来。要怎么改?
复制代码

作者: yjh777    时间: 2016-03-12 19:37
DAT=`find *.DAT -mtime 0`

有可能獲得多个结果,判断是否有结果就可以了
作者: johnson0418    时间: 2016-03-12 20:21
回复 4# yjh777


    那我要怎么改进?

作者: yjh777    时间: 2016-03-12 20:24
johnson0418 发表于 2016-03-12 20:21
回复 4# yjh777


二楼给答案了
作者: johnson0418    时间: 2016-03-12 20:26
回复 6# yjh777


    我在3楼回复了,执行./aa时,返回no。
作者: johnson0418    时间: 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
作者: cao627    时间: 2016-03-13 16:42
  1. ACC=`accview -tf $DAT |awk '{print $4}'| sed -nr 's/.*(66208).*/\1/p;q'`
复制代码
@johnson0418




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2