shell編程筆記一

來源:互聯網
上載者:User

標籤:編程   shell   局部變數   bash   指令碼   

shell編程:
bash變數類型:
    環境變數
        本地變數(局部變數)
        位置變數
        特殊變數(內建)

本地變數:
    varname=value:範圍為整個bash進程可以使用;
        變數命名規範:
        1. 只能含字母、數字和底線,並且以字母和底線開頭
        2. 最好不要跟系統已有的環境變數重名
        3. 見名知意

局部變數:
     local varname=value:範圍為當前程式碼片段;

環境變數:範圍為當前shell進程及其子進程,不能影響到其父進程;
    export varname=value “匯出”,如果變數已經定義可以只是用變數名 export varname,即
        1. export varname=value
        2. varname=value
            export varname
        指令碼在執行命令時會啟動一個子shell環境變數:
        系統自動執行的指令碼(非命令列啟動)就需要自我定義需要的個環境變數;


位置變數:
     $1,$2,$3,……


特殊變數:
    $?:上一個命令執行狀態的返回值:
   
        程式執行可能有兩種返回值:
                1. 程式執行結果
                2. 程式狀態返回嗎(0-255)
                     0           則為執行正確
                    1-255    則執行出錯(1,2,127系統預留);


     bash:

引用變數:${varname},括弧可以省略


撤銷變數:
    unset varname

查看當前shell中的變數:
    set
        包括環境變數和本地變數

查看當前shell中的環境變數:
        1. printenv
        2. env
        3. export

條件判斷:
    如果使用者不存在:
         添加使用者,給密碼並顯示添加成功;
    否則
         顯示使用者已經存在,沒有添加;

bash中條件判斷:
    條件測試類型:
        1. 整數測試
        2. 字元測試
        3. 檔案測試


    條件測試的運算式:
        1. [ expression ]
        2. [[ expression ]]
        3. test expression
    整數比較:
        -eq:測試兩個整數是否相等;比如 $A -eq $B,如果A與B變數的值相等,則返回0,否則返回非0值
        -ne:測試兩個整數是否不等;相等為假,不等為真
        -gt: 測試一個數是否大於另一個數;大於為真,否則為假
        -lt:  測試一個數是否小於零一個數;小於為真,否則為假
        -ge:測試一個數是否大於或等於另一個數;大於或等於為真,否則為假
        -le: 測試一個數是否小於或等於另一個數;小於或等於為真,否則為假

    命令間的邏輯關係:
        邏輯與:&&
                第一個條件為假時,第二個條件不會被執行
                第一個條件為真時,第二個條件會被執行,作為結果
        邏輯或:||
                第一個條件為真時,第二個條件不會執行,結果為真
                第一個條件為假時,第二個條件會被執行,作為結果


  1.單分支的if語句:
        if 判斷條件; then
                statement1
                statement2
                ……
        fi
  2. 雙分支的if語句:
        if 條件判斷; then
                statement1
                statement2
                ……
        else
                statement1
                statement2
                ……
        fi

        如果then與if不在同一行,則“;”可以省略,如果在同一行,則不可省略。fi必須獨佔一行

如果使用者存在,就顯示使用者已存在;否則,就添加此使用者
         id user1 && echo "user1 exist" || useradd user1

如果使用者不存在,就添加;否則顯示其已經存在
         ! id user1 && useradd user1 || echo "user1 exists."

如果使用者不存在,就添加並設定密碼,否則,顯示其已經存在:
          ! id user1 && useradd user1 && echo "user1" | passwd --stdin user1 || echo "user1 exists."

shell指令碼練習:
練習一要求:
        1. 添加5個使用者,user1, user2, ……, user5;
        2. 每個使用者的密碼同使用者名稱,且要求,添加密碼完成後不顯示passwd命令的執行結果資訊;
        3. 最後顯示當前系統上一共有多少個使用者;
        #useradd user1
        #echo "user1" | passwd --stdin user1 &> /dev/null
        #echo "Add user1 successfully."
        ! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo "user1 exists."
        ! id user2 &> /dev/null && useradd user2 && echo "user1" | passwd --stdin user2 &> /dev/null || echo "user2 exists."
        ! id user3 &> /dev/null && useradd user3 && echo "user1" | passwd --stdin user3 &> /dev/null || echo "user3 exists."
        ! id user4 &> /dev/null && useradd user4 && echo "user1" | passwd --stdin user4 &> /dev/null || echo "user4 exists."
        ! id user5 &> /dev/null && useradd user5 && echo "user1" | passwd --stdin user5 &> /dev/null || echo "user5 exists."

        USERS=`wc -l /etc/passwd | cut -d: -f1`
        echo "$USERS users"

練習二要求:
        給定一個使用者,如果其UID為0,就顯示此為管理使用者;否則,就顯示其為普通使用者;
        NAME=user1
        USERID=`id -u $NAME`
        [ $USERID -eq 0 ] && echo "root" || echo "common user."



算數運算:
A=4
B=4
        1. let 算數運算運算式
                let C=$A+$B
        2. $[算數運算運算式]
                C=$[$A+$B]
        3. $((算術運算運算式))
                C=$(($A+$B))
        4. expr 算數運算運算式,運算式中各運算元及運算子之間要有空格,而且要使用命令引用
                C=`expr $A + $B`

shell編程筆記一

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.