shell學習筆記之二(變數)

來源:互聯網
上載者:User

標籤:shell-變數

    是一種弱類型的變數,聲明時不需要指定其變數類型,也不需要遵循“先聲明後使用”,任何時候只要想用就可以用。    局部變數      在某個shell中生效的變數,在其他shell中無效。可以使用local內建命令來“顯示”的聲明局部變數    環境變數       shell指令碼中,預設是全域的    預設的環境變數:       BASH:說明bash的全路徑       BASH_VERSION       CDPATH:用於快速進入目錄       EUID:記錄目前使用者的UID       FUNCNAME :在使用者函數體內部,記錄當前函數體的函數名       HISTCMD:記錄下一條命令在history命令中的編號       HISTFILE:記錄history命令的記錄檔案的位置       HISTFILESIZE       HOSTNAME       HOSTTYPE:主機架構       MACHTYPE:主控件類型的GNU標示       LANG:語言環境       PWD:記錄目前的目錄       OLDPWD:記錄之前目錄       PATH       PS1:          命令提示字元,預設是[\[email protected]\h \W]\$,其中\u是使用者名稱,\h是主機名稱,\W是當前工作目錄的basename,\$是使用者UID的替換字元。    定義和使用變數        var=value        注意:            1、=兩邊沒有空格 var = value(X)            2、變數中有空格時必須要用””或’’引起來        取值:${var}或者$var        注意:        1、如果變數值引用的是其他變數,則必須使用雙引號。因為單引號會阻止shell解釋特殊字元$。        2、由於shell是弱變數特性,因此即使在指令碼中沒有定義變數也是可以引用的,從而使得錯誤很難找到。        3、shell具有弱變數的特性,不需要聲明就可以使用,可以設定變數必須先聲明再使用            shopt -s -o nounset    取消變數        unset var    取消函數        unset function    特殊變數        位置參數            $1,...,$n  當n>10時,需要寫成$(n)            $0            [email protected]/$*      指令碼所有的參數            $#     指令碼參數總和        指令碼或命令傳回值            $?上一個命令的傳回值,要查看某個命令的傳回值必須在運行中個命令後立即查看$?            linux中規定正常的退出命令和指令碼應該以0作為其傳回值,任何非0的傳回值都表示命令未正確退出或正常執行            在自動化指令碼中,也可以通過$?變數的值判斷之前命令的執行狀態,從而採取不同的動作    數組        shell變數是弱類型的,並不要數組的每一個元素都是相同的類型,shell中的數組對元素個數沒有限制,但是只支援一維數組        shell對於陣列變數的聲明非常寬鬆,隨時都可以根據需要增加變數中的元素        定義            declare -a array        初始化            array[0]=0            array[1]=1            array[2]="hello"              或                declare -a array=(0 1 "hello")                array[3]=‘waNG‘              或                array=(‘john‘ ‘sue‘)              或                array=([3]=3 [4]=4 [7]=4)                    跳號賦值        數組操作            取值                ${arrayname[index]}                例:                    1、echo ${array[0]} //取單個元素                    2、echo ${array[@]} //取所有的元素值,得到的是以空格隔開的元素值                    3、echo ${array[*]} //取所有的元素值,得到是一整個字串                    4、arr1=arr2     //這樣相當於arr1=arr2[0]            長度                利用@或*可以將數組擴充成列表,然後使用#來擷取數組元素的個數                例:                    1、echo ${#array[@]}                    2、echo ${#array[*]}                        通過本例也就知道了求字串的長度,${#string}            截取                截取某個元素的一部分,對象可以是整個數組或某個元素                例:                    1、取出數組的第一,第二個元素                        echo ${array[@]:1:2}                    2、取出第二個元素從第0個開始連續5個字元                        echo ${array[2]:0:5}            串連                conn=(${arr1} ${arr2})            替換數組元素                array=(${array[@]/old/new})            取消數組或元素                unset array[0]                unset array    唯讀變數        readonly RO=100        等效於:declare -r RO=100    變數的範圍        1、shell變數的範圍是在本shell內,屬於本shell的全域變數,也就是從定義該變數的地方開始到shell結束,或者主動使用unset刪除了該變數的地方為止。        2、在函數題內使用local關鍵字聲明了和全域變數同名的局部變數後,對該變數的操作只會影響局部變數,而不會影響與之同名的全域變數。

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.