Linux運維之道之ENGINEER1.4(shell腳本基礎)

ENGINEER1.4shell

SHELL腳本基礎ubuntu

認識shell環境vim

bash shell的使用方式bash

交互式:ide

--人工干預,智能化程度高測試

--逐條解釋執行,效率低spa

非交互式:命令行

--須要提早設計,智能化難度大;設計

--批量執行,效率高;server

--方便在後臺及悄悄地執行;

什麼是shell腳本:提早設計可執行語句,用來完成特定任務的文件

--解釋型程序

--順序,批量執行

規範shell腳本的通常組成:

#!環境聲明

#註釋文本

可執行代碼

----------------------------------------------------------------------------------------------------------------------------------

例1:

編寫helloworld.sh問候腳本

  1. 編寫腳本代碼:

    #vim  /root/helloworld.sh

    #!/bin/bash

    echo 「hello  world」

  2. 添加x執行權限

    #chmod  +x  /root/helloworld.sh

  3. 運行腳本測試

    #/root/helloworld.sh

例2:

編寫系統信息報告腳本

  1. 編寫腳本代碼:

    #vim  /root/1.sh

   #!/bin/bash

   cat  /etc/redhat-release

    uname  -r

    hostname

2.添加x執行權限

   # chmod  +x   /root/1.sh

3.運行腳本測試:

   #/root/1.sh

--------------------------------------------------------------------------------------------------------------------------------------

簡單腳本技巧

重定向輸出的應用

>:只收集正確    2>:只收集錯誤      &>:所有收集

本例要求編寫一個腳本 /root/out.sh,功能特性以下:

  1. 執行此腳本顯示  I  love  study !!

  2. 執行 /root/out.sh  2>  err.log 應該沒有顯示,可是查看 err.log 文件的內容爲  I  love  study !!

步驟:

  1. #vim /root/out.sh

    #!/bin/bash

    #echo  "i  love   study!!"   >&2

  2. #chmod  -x   /root/out.sh

  3. #/root/out.sh

  4. #/root/out.sh  2>err.log

  5. #cat err.log

----------------------------------------------------------------------------------------------------------------------------------------

變量的定義及使用

以不變的名稱存放可能變化的值

引用變量值:$變量名    以{}界定易混淆名稱

變量的種類:

根據變量的用途不一樣區分:

環境變量:變量名通常都大寫,用來設置用戶,系統環境   (PATH)

位置變量:bash內置,存儲內置腳本時提供的命令行參數   $n ,n爲序號  $1 $2 ...${10}

預約義變量:bash內置,可直接調用的特殊值,不能直接修改

$#:已加載的位置變量的個數   $*:全部位置變量的值  $?:程序退出後的狀態值,0表示正常,其餘異常

自定義變量:用戶自主設計,修改和使用

例:

要求編寫一個腳本 /root/myhead,功能特性以下:

此腳本可接收2個位置參數,可以按照下列格式執行

此腳本執行後,能顯示「你一共提供了 $# 個參數」,而後在下一行顯示「文件 $1 的前 $2 行: 」,緊跟下一行開始輸出對應文件的前幾行內容


步驟一編寫 /root/myuseradd 添加用戶的腳本

#vim  /root/myuseradd

#!/bin/bash

echo  「一共提供了$#個參數」

echo   "用戶名是$1,密碼是$2   "

useradd $1

echo "$2"   |  passwd  --stdin $1

二.添加執行權限

#chmod  -x  /root/myuseradd.sh

----------------------------------------------------------------------------------------------------------------------------------------------

經常使用測試選項:

  • 文件狀態檢測  -f、-d、-e、-r、-w、-x

  • 整數值比較  -gt、-ge、-eq、-ne、-lt、-le

  • 字符串比較  ==、!=

  • 取反操做  !

多分支if選擇結構:

if  條件測試操做1   then命令序列1

elif 條件測試操做2   then命令序列2

else  命令序列3

fi

例:

本例要求在虛擬機 server0 上建立 /root/foo.sh 腳本,任務目標以下:

  1. 當運行/root/foo.sh redhat,輸出爲fedora

  2. 當運行/root/foo.sh fedora,輸出爲redhat

  3. 當沒有任何參數或者參數不是 redhat 或者 fedora時,其錯誤輸出產生如下信息: /root/foo.sh redhat|fedora

1)編寫腳本代碼

    [root@server0 ~]# vim  /root/foo.sh
    #!/bin/bash
    if [ "$1" = "redhat" ]  
    then
           echo "fedora"
    elif [ "$1" = "fedora" ]
    then
           echo "redhat"
    else
           echo "/root/foo.sh redhat|fedora" >&2
    fi

2)添加x執行權限

    [root@server0 ~]# chmod  +x  /root/foo.sh  


 步驟二:測試foo.sh判斷腳本

1)測試提供正確參數的狀況

    [root@server0 ~]# /root/foo.sh  redhat fedora
    [root@server0 ~]# /root/foo.sh  fedora Redhat

2)測試提供非預期參數的狀況

    [root@server0 ~]# /root/foo.sh  ubuntu
    /root/foo.sh redhat|fedora

3)測試不提供參數的狀況    [root@server0 ~]# /root/foo.sh    /root/foo.sh redhat|fedora  

相關文章
相關標籤/搜索