码迷,mamicode.com
首页 > 系统相关 > 详细

bash shell 脚本学习(二)

时间:2016-04-08 16:49:45      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:脚本编写   shell   bash   私房菜   

今天写第二个shell脚本,写一下《私房菜》里的课后题。该题需要写一个检查某一个名称是否存在,不存在则创建一个文件;存在则需要判断下该名称是否文件,是文件则删除后建一个同名目录,如果是目录则将此目录删除。

先设立一个基础条件:操作目录为/tmp/test/(注:如果此目录不存在则需要手动创建),需要建立的文件或目录名称为logical。

下边开始写脚本。

#!/bin/bash
#Program:
#    This program to check if a filename exists .
#History     
#2016/04/08    MG    First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/sbin:~/bin
export PATH

echo -e "正在检查/tmp/test/logical是否存在,请稍后..."
test -e "/tmp/test/logical" && state=0 || state=1
path="/tmp/test"
filename="logical"
case $state in
    "1")
        echo "该文件不存在,正在创建..."
        mkdir -p $path && touch "$path/$filename"
        echo "文件创建成功!"
     ;;
     *)
         test -d "$path/$filename" && statu=0 || statu=1
             if [ "$statu" == "0" ];then
                 echo "$filename 存在且为目录。"
                 rm -rf "$path/$filename"
                 echo "已将该目录删除!"
              else
                  echo "$filename 存在且为文件,正在删除并建立同名目录"                  
                  rm -f "$path/$filename" && mkdir "$path/$filename"
                  echo "正在创建请稍后..."
                  echo "$filename 目录已经建立!"
              fi
     ;;
 esac

简单说明下,写脚本的逻辑。通过test -e命令来判断 "logical" 名是否存在,如果不存在状态设为"1",并根据题目创建文件。如果存在则通过test -d命令来判断是否为目录,如果是目录将其状态设为0,并将该目录通过rm -rf 命令来删除(注:如果不加-r参数无法删除目录,所以需要加入-r参数);如果是文件则通过rm -f 命令将文件删除,通过mkdir 命令来创建同名目录(注:“命令1  && 命令2”的写法的意思是如果命令1执行成功才继续执行命令2)。

该脚本功能还是相对简单,会有些不足之处,继续努力改进吧。

本文出自 “积小流,成江海” 博客,请务必保留此出处http://goodjoe.blog.51cto.com/9173556/1761796

bash shell 脚本学习(二)

标签:脚本编写   shell   bash   私房菜   

原文地址:http://goodjoe.blog.51cto.com/9173556/1761796

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!