中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

我的朗科運維第七課

發布時間:2020-04-03 23:02:40 來源:網絡 閱讀:289 作者:520的羅 欄目:網絡安全

shell腳本編程

在講shell腳本編程前,先了解一下bash的顏色顯示規則:

    bash的顏色顯示規則是按照ASCII編碼對顏色進行設置的;其一些常用的編碼有:

        \033:Ctrl鍵;

        [:控制顏色屬性命令;

        0m:關閉顏色屬性命令;

        1m:加粗顯示文本字符;

        4m:為文本字符加下劃線標識;

        5m:使文本字符閃爍;

        7m:將文本字符的背景色和前景色交換顯示;

        8m:將文本字符的背景色和前景色設置為相同顏色;

        30m-39m:設置文本字符的前景色;38m和39m暫時保留;

        40m-49m:設置文本字符的本景色;48m和49m暫時保留;

    例子:echo -e "\033[5;37mhello world\033[0m"       #顯示×××的閃爍的hello world

 在Linux中一個完整的Linux程序,一般包括4類文件:

    二進制文件(可執行文件)、頭和庫文件、幫助文件、配置文件

    其中bash--CLI(命令行接口)的一種,屬于完整的應用程序,也有這四類文件;

        bash的配置文件分為一下三類:

            profile類:為交互式登陸的shell進程實現功能出事化的配置文件;

            bashrc類:為非交互式登陸的shell進程實現功能配置的文件;

            logout類:為交互式登陸的shell進程提供終止及清理類功能的配置文件;

        shell的類型:

            交互式登陸的shell:

                1.直接通過某個終端輸入賬號和密碼后登陸打開的shell進程;

                2.使用su - USERNAME 或su - USERNAME 執行切換登陸打開的shell進程;

            非交互式登陸的shell:

                1.在圖形界面下,透過菜單或右鍵菜單打開的終端的shell進程;

                2.使用su USERNAME執行切換登陸打開的shell進程;

bash的配置文件:

    profile類:

        全局:對所有用戶都生效的配置;其目錄為:/etc/profile、/etc/profile.d/*.sh

    注意:在RHEL或CentOS系列的操作系統中,通常情況下,如果一個配置文件內容很多,格式復雜,我們會將其切割成多個片段,將切割出來的片段統一的存放在“程序名稱.d”目錄中;在這樣目錄中所保存的片段文件,大多以統一的文件后綴名來命令;

        用戶個人:僅僅只是針對某個用戶有效的配置文件;其目錄:~/.bash_profile

        profile類配置的文件的作用:

            1.用于定義用戶的環境變量;

            2.用于運行腳本或執行命令;

    bashrc類:

        全局:/etc/bashrc

        用戶個人:/.bashrc

        bashlrc類配置的文件的作用:

            1.用戶定義本地變量

            2.用戶定義命令的別名;

            3.定義umask;

    注意:只有超級用戶root可以修改全局類的配置文件;普通用戶只能修改其家目錄中的個人配置文件;

交互式登陸的shell進程,會按照順序加載下列配置文件:

    /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登陸的shell進程,會按照順序加載下列配置文件:

    ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

所有在命令行中執行的命令的操作,只要沒涉及到文件的修改的,一般都只是針對當前的shell生命周期有效;只要shell進程結束,所有的設置均失效;

配置文件的作用;使得我們賴以生存的配置信息可以長期有效,只要不修改配置文件中的內容,每一次打開shell都會使曾經的配置生效;

讓配置文件中新定義的配置能夠立即生效的方式:

    1.source命令:

        格式:source /PATH/TO/SOME_CONF_FILES

                    . /PATH/TO/SOME_CONF_FILES

    2.exec命令:

        格式:exec /PATH/TO/SIME_CONF_FILES

bash中變量中存放的字符串處理方式:

    弱變量:

        1.無需事先定義即可使用;

        2.沒有變量數據類型的硬性要求,默認是字符行;

    1.字符串切片:

        ${#VAR}:返回字符串類型的變量VAR的長度;

        ${VAR:offset}:返回字符串變量VAR中第offset個字符后面的內容,不包括第offset個字符;offset的取值范圍為:0~$[${#VAR}-1]

        ${VAR:offset:number}:返回字符串變量VAR中從第offset個字符后開始,長度為number的字符部分;

        ${VAR: -length}:取字符串最右測的length個字符;

    2.基于模式取字符串:

        ${VAR#*PATTERN}:自左而右,查找VAR變量所存儲的字符串中,第一次被PATTERN匹配的字符,刪除從字符串開始到PATTERN匹配的字符之間的所有字符;

        ${VAR##*PATTERN}:自左而右,查找VAR變量所存儲的字符串中,所有被PATTERN匹配的字符,刪除從字符串開始到最后一個PATTERN匹配的字符之間的所有字符;

        ${VAR%PATTERN*}:自右而左,查找VAR變量所存儲的字符串中,第一次被PATTERN匹配的字符,刪除從字符串結尾到PATTERN匹配的字符之間的所有字符;

        ${VAR%%PATTERN*}:自右而左,查找VAR變量所存儲的字符串中,第一次被PATTERN匹配的字符,刪除字符串結尾到最后一個PATTERN匹配的字符之間的所有字符;

    3.查找替換:

        ${VAR/PATTERN/SUBSTRING}:在VAR變量中查找匹配PATTERN的內容,將其第一個匹配的結果更換成SUBSTRING;

        ${VAR//PATTERN/SUBSTRING}:在VAR變量中查找匹配PATTERN的內容,將其所有匹配到的結果都更換成SUBSTRING;

        ${VAR/#PATTERN/SUBSTRING}:在VAR變量中查找行首匹配PATTERN的內容,將匹配的結果更換成SUBSTRING;

        ${VAR/%PATTERN/SUBSTRING}:在VAR變量中查找行尾匹配PATTERN的內容,將匹配的結果更換成SUBSTRING;

    4.查找刪除:

        ${VAR/PATTERN}:在VAR變量中查找匹配PATTERN的內容,將其第一個匹配到的結果刪除;

        ${VAR//PATTERN}:在VAR變量中查找匹配PATTERN的內容,將其所有匹配到的結果刪除;

        ${VAR/#PATTERN}:在VAR變量中查找匹配PATTERN的內容,將其行首匹配到的結果刪除;

        ${VAR/%PATTERN}:在VAR變量中查找匹配PATTERN的內容,將其行尾匹配到的結果刪除;

    5.字符的大小寫轉換:

        ${VAR^^}:將VAR變量中的所有小寫字母轉換為大寫字母;

        ${VAR,,}:將VAR變量中的所有大寫字母轉換成小寫字母;

    6.變量賦值:

        ${VAR:-value}:如果變量VAR為空或未被設置,那么直接返回value的值,否則返回變量VAR的值;

        ${VAR:+value}:如果變量VAR不為空,則返回value;

        ${VAR:=value}:如果變量VAR為空或為被設置,那么直接返回value的值,并且將value的值賦值給變量VAR;否則返回變量VAR的值;

    7.變量的間接引用:

        如果第一個變量的值的恰好是第二個變量的變量名,從第一個變量引用第二個變量的值的方法,就稱為變量的間接引用,也稱為間接變量引用;

                數組

    在了解數組前,我們先來聊聊變量,變量就是內存的存儲空間。它的特點:是每個變量中只能存放一個數據,變量只能進行一次性的賦值。但是當我們存放本班每個人的名字與變量時,我們有一下幾種方法:

        1.一次性賦值:NAME="name1 name2 name3 ..." 

        2.使用多個變量,分別賦值:NAME1=xu、NAME2=shen;

        3.數組變量

    數組:存放一個或多個元素的連續的內存空間,相當于多個變量的集合;

    數組元素:數組中任何一個存放數據的存儲單元;

    數組的索引:

        1.數子:索引數組(Index ARRAY)

        2.名稱(字符串):關聯數組(Related ARRAY) bash5.0以上的版本才支持;

    數組分兩種:

        稠密數組:索引編號必須連續

        稀疏數組:索引編號可以不連續,bash數組屬于此類;

    數組的聲明方法:

        1.declare命令:

            declare -i NAME:將NAME聲明為整型變量;

            declare -x NAME:將NAME聲明為環境變量;

            declare -a NAME:將NAME聲明為索引數組;

            declare -A NAME:將NAME聲明為關聯數組;

        2.直接聲明數組:

            直接為數組賦值:

                ARRAY_NAME=("value1" "value2" "value3" ...) 聲明稠密數組;

                ARRAY_NAME=([0]="value1" [1]="value2" [4]="value3" ...) 聲明稀疏數組

        3.定義數組的元素而穿件數組:

            ARRAY_NAME[0]=value1

            ARRAY_NAME[1]=value2

            ...

    引用數組中的元素:

        引用變量的方法:${NAME}

        引用數組元素的方法:${ARRAY_NAME[INDEX]}

            注意:如果不給出INDEX,則表示引用數組的第一個元素,即INDEX=0的元素;

        引用整個數組的所有元素:${ARRAY_NAME[*]}或者${ARRAY_NAME[@]}

        引用數組的索引:${!ARRAY_NAME[*]}或者${!ARRAY_NAME[@]}

    查看數組的長度(數組中有效元素的個數)${#ARRAY_NAME[*]}或者${#ARRAY_NAME[@]}

    數組切片:

        ${ARRAY_NAME:offset}:顯示包括offset數字所表示的索引位置及以后的所有元素;

        ${ARRAY_NAME:offset:number}:顯示包括offset數字所表示的索引位置及以后的number個元素;

    向數組中追加元素:

        1.稠密數組: ARRAY_NAME[${ARRAY_NAME[*]}]=valueN

        2.稀疏數組:ARRAY_NAME[INDEX]=value    注意:INDEX必須為未被使用的數組元素索引編號

    撤銷數組:usnet ARRAY_NAME

    刪除數組中的元素:unset ARRAY_NAME[INDEX]

shell腳本編程

    特點:過程式編程、腳本類編程、解釋型編程

    過程式編程語言:

        順序執行結果:

            以從左到右,從上到下順序執行所有的語句(命令)

            shell腳本的主體結構;

        選擇執行結構:

            依照給定條件的邏輯判斷結果或者依照可選的取值范圍,進而選擇某個分支中的語句倆執行;

            if:分支選擇標準,邏輯判斷的結果;

            case:分支選擇標準,根據可選的取值;

        循環執行結構:

            對于某特定語句,重復執行0次,1次或多次;

            for:遍歷指定的列表;

            while:根據邏輯判斷的結果;

            until:根據邏輯判斷的結果;

            select:死循環,利用循環機制提供選擇列表;

    選擇執行結構:

        if語句:if 命令;then 命令;[elif 命令;then 命令;]... [else 命令 ;] fi

        if語句單分支結構:如果條件為真,則執行then后的命令,否則,不做任何操作;

            格式:    

if CONDITOIN
then STATEMET
fi

if CONDITION ; then
    STATEMENT1
    STATEMENT2
    ...
fi

            注意:想要執行then后面的STATEMENTS,前提條件是CONDITION部分為真;

        if語句的雙分支結構:如果條件為真,就執行then后面的命令,否則就執行else后面的命令;

if CONDITION ; then
    STATEMENT
    ...
else
    STATEMENT
    ...
fi

        if語句的多分支結構:首先判斷CONDITION1是否為真,如果為真,則執行第一個then后面的語句;否則就判斷CONDITION2是否為真,如果為真,就執行第二個then后面的語句;否則就判斷CONDITION3是否為真,如果為真,就執行第三個then后面的語句...如果所有的CONDITION都為假,就執行else后面的語句;

if CONDITION1 ;then
    STATEMENT
    ...
elif CONDITION2 ; then
    STATEMENT
    ...
elif CONDITION3 ; then
    STATEMENT
    ...
...
else
    STATEMENT
    ...
fi

         建議:if多分支結構,能不用就不用

循環執行結構:

    將一段代碼重復的執行0次,1次或多次;

    一個好的循環結構,必須要包括連個重要的環節:

        進入循環的條件:

            開始循環時所滿足的條件;

        退出循環的條件:

            循環結束所滿足的條件;

    for循環:

        1.遍歷列表

for VAR_NAME in LIST ; do 循環體; done

for VAR_NAME in LIST ; do
    循環體
done

         VAR_NAME:任意指定的變量名稱,變量的值是從LIST中取值并賦值的;

        循環體:一般來說是能夠用到VAR_NAME的命令或命令的組合;如果循環體中沒有包括VAR_NAME,則可能出現死循環;

        LIST的生成方式 :

            1)直接給出

            2)純整數列表

            3)花括號展開

            4)命令的執行結果的返回值

            5)GLOBBING

            6)某些變量的引用:$@, $*

        2.控制變量

for ((表達式1; 表達式2; 表達式3 ));do 命令;done

for ((表達式1; 表達式2; 表達式3 ));do
    循環體
done

            表達式1:為變量賦初始值

            表達式2:循環的退出條件

            表達式3:變量值的變化規律


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临沭县| 江门市| 呼伦贝尔市| 八宿县| 社旗县| 灌云县| 卓尼县| 钟祥市| 临颍县| 许昌县| 莒南县| 阿拉善盟| 东方市| 洞头县| 耒阳市| 瑞丽市| 贵南县| 商南县| 射洪县| 定陶县| 安仁县| 肥西县| 萍乡市| 荔浦县| 揭东县| 泗洪县| 宽甸| 珠海市| 石景山区| 华池县| 通城县| 鄂托克前旗| 余庆县| 金山区| 社旗县| 吉木萨尔县| 南投县| 潞城市| 全南县| 临桂县| 陇川县|