当前位置: DBARoad > Unix | Shell > 文章正文

一个简单的判断,就可避免错误

                    作者 :OoNiceDream【转载时请务必以超链接形式标明文章原始出处和作者信息】
                    链接:http://www.dbaroad.me/archives/2009/02/check-if-directory-exists.html

今天在执行Shell脚本时,不小心把调用的SQL脚本重复执行。还好有唯一性约束,报错就退出了,不然俺就惨了,得一条条删数据了。
Shell脚本是大致这样的执行的:
1、输入SQL脚本名,建立相应的目录
2、把这个脚本在30个库上循环执行
3、接着执行下一个SQL脚本,重复以上步骤
4、所有SQL脚本执行完后,检查是否有错,并把所有目录移到以当天日期命名的目录下

脚本在很多地方都有判断,可惜偏偏少了这个:判断SQL脚本是否重复执行了。

返回头看看,发现还是有方法可以避免这种错误,也很简单。
脚本,每次执行都会创建一个目录:

mkdir ${SPSNO}log

然而重复执行相同的SQL脚本,虽然依然执行mkdir ${SPSNO}log,报错是肯定的,但没有加判断,脚本就继续执行了。
所以只要加个判断,给个提示,就可以避免这样的错误了。
修改如下:

if [ -d ${SPSNO}log ]
then
  echo "******************************************************"
  echo "The directory ${SPSNO}log have been exists,please check!"
  echo "******************************************************"
  echo "Continue? [Y/N]"
  read ANS
        if [ $ANS = "N" -o $ANS = "n" ]
        then
        echo "Program aborted ..."
        exit 1
        fi
else
  mkdir ${SPSNO}log
fi

重复运行脚本,报错提示如下:

******************************************************
The directory lslog have been exists,please check!
******************************************************
Continue? [Y/N]

— The End —

关键字:
喜欢DBARoad的文章,那就通过 RSS Feed 功能订阅阅读吧!

我要评论

*

* 绝不会泄露


  • 订阅


      抓虾
      google reader
      my yahoo
      bloglines
      鲜果
      有道

站内搜索



返回首页 | 关于我 | 联系我 | 广告合作 | 网站地图 | 友情链接 | 版权声明 |