Linux的shell編程篇之變量與運算


一、變量

在多數語言中,變量一般都包括四個特性:作用、名稱、類型、值。

  1、變量的命名規則:

    1.1、變量的名稱可以是由字母、數字、下划線組成,但不可以以數字開頭。

    1.2、在bash中,變量的默認類型是字符串型。如執行數字運算,則需要指定變量類型為數值型。

    1.3、與其他語言一樣,變量與值之間使用“=”連接,但“=”左右不能存在空格。

    1.4、變量的值如果有空格,需要使用單引號或者雙引號括起來。

    1.5、變量的值是可以疊加的。

    

     1.6、變量的名稱使用大寫,目的是與Linux的系統命令區分開來。

  2、變量的分類:

    用戶自定義變量:最常見的變量,可以由用戶自由定義變量的作用、名稱、類型、值。

    環境變量分為兩種:

        用戶自定義環境變量:可以由用戶自由定義變量的作用、名稱、類型、值。

        系統環境變量:這種變量的作用、名稱、類型都是系統固定好的,一旦修改便會出現問題。變量的值可以由用戶自己修改但不可隨意修改。

    位置參數變量:與預定義變量一致。

    預定義變量:就是shell設計者事先已經定義好的變量,可以直接在shell腳本中使用。變量的作用、名稱、類型都是固定的,用戶可以自定義值。

  3、用戶自定義變量的增用改查刪。

    

     

     

     

     

     

     注意:下面這個圖中的QQ變量,第一個是本不存在的變量,第二個我賦予了空值(空值也是一個值)。但兩者的輸出結果一樣,我們沒法分辨。這時候就需要(set -u)命令來區分。

    

    下圖中刪除了QQ變量,然后使用了(set -u)命令,此時再次輸出變量QQ,就顯示報錯。

     

   4、用戶自定義環境變量。

    與用戶自定義變量大致相同。不過需要執行export命令,可以將用戶自定義變量變為用戶自定義環境變量。

    

     兩者的區別:用戶自定義變量只能適用於當前的shell,不存在與其他子shell中。而用戶自定義環境變量在整個系統中都是生效的。

    執行(pstree)命令(沒有此命令可以安裝 psmisc 依賴包),可以查看進程樹。這里顯示的當前bash(也成為父shell)。

    

    當執行(bash)命令后,便進入了子shell。

     

    

     輸入exit,可以退回到上一級shell中。

  5、系統環境變量。

    最常用的PATH環境變量

     在執行命令的時候,我們輸入的都是命令本身,並沒有填寫路徑,但是卻可以在任意目錄執行。這里使用到的就是PATH環境變量。

    

     上面圖可以看到,PATH變量定義的是一些路徑,通過(:)來進行分開。所以,我們將寫好的腳本放在一個固定目錄中。再將目錄的絕對路徑保存在PATH變量中,調用腳本時,任意目錄直接輸入腳本名稱就可以執行。

    

     上面添加的PATH環境變量也是臨時的,一旦重啟就會消失。要想永久生效,需要寫入配置文件中。

  6、位置參數變量

    6.1、$n:其中,n為數字,0代表命令本身,1-9代表從第一至第九個參數,若參數十個以上時舉例{10}。

    一個簡單的加法計算器1

    

     

     上面的圖總共輸出了兩行。而前面輸入的79  21 就是執行命令后面添加的兩個參數,分別賦值給了num1與num2進行加法計算,輸出100;而第二行是echo $0 輸出命令本身。

    6.2、$*、$@:代表執行命令時后面的參數。$*會把所有的參數看成為一個整體;而$@是把每個參數當作一個整體。

    

     

     兩種不同的輸出結果,第一種結果是變量a將輸入的五個參數作為一個值輸出;第二種結果是變量b將五個參數作為五個值輸出。

    6.3、$#:統計變量的個數。

    

     

    6.4、接收鍵盤輸入

    上面的輸入都需要在命令后面加上參數,也可以設置成為帶有提示信息的等待用戶輸入。

    read  選項  變量

    選項:-p “提示信息”:在等待鍵盤輸入時給予的提示信息

       -t   數字:等待時間(單位秒)

       -n  數字:限制用戶的輸入長度

       -s:隱藏用戶的輸入(密文輸入)

    簡易加法計算器2

    

  7、預定義變量

    7.1、$?:最后一次命令的執行狀態。在多數默認情況下,返回值為0,則代表上一條命令程序正常執行;若返回值非0,則代表上一條命令程序執行不准確。

    7.2、$$:當前進程的進程號(PID)。

    7.3、$!:后台運行的最后一個進程的進程號(PID)。

  8、變量的類型

    在shell中,變量的默認類型是字符串類型。如果想要改變變量的類型可以有以下幾種方法。

    8.1、declare +/-  選項   變量

    其中 + :取消設定變量的類型

       - :設定變量的類型

       a :設定/取消變量為數組型

       i :設定/取消變量為整數型

      -x :將變量設定為環境變量

      -r :將變量設定為只讀變量

      -p :查詢變量的類型

    export可以將變量變為環境變量,實際上export命令就是調用的declare -x 這個命令;declare -r可以將變量變為只讀變量,只讀變量不能修改變量名、不能修改值、不能刪除,但這種變量除了系統自帶的,用戶自動設定的都是臨時生效,一旦系統重啟,變量就會消失。所有的變量的與變量類型都可以使用declare -p 命令查詢。

    8.2、調用expr命令進行數值運算

    

     要注意“+”的兩邊都有空格

    8.3、調用let命令進行數值的運算

    

    8.3、使用"$(())"、“$[]”格式進行數值的運算

    

    上面這些數值運算都是整數型數值運算,小數點后直接舍棄,不會四舍五入。

二、運算

  1、運算符

  四則運算符:(+ - * /);有括號的先算括號內的;%取模(21%4,相當於21/4=5····1,所以21%4的結果為1)。

  2、變量的運算

    2.1、整數變量運算

    

     

     2.2、數組型變量運算

    通常情況下,一個變量內保存一個值。但是數組型的變量,一個變量內保存的多個值,而區分這些值靠的就是變量的下標。

    正常的標准寫法是declare -a num[0]=123。但是由於num[0]這個寫法就比較特別,所以將 declare -a 省略系統也是認識的。

    下標一般情況下從0開始。

    

  3、變量的測試與內容置換

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM