bash shell 腳本學習(二)

今天寫第二個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)。

該腳本功能還是相對簡單,會有些不足之處,繼續努力改進吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章