Shell腳本語言(第一篇)

第一點(diǎn):Shell介紹?
    Android開發(fā):動(dòng)態(tài)庫編譯(.so文件)
    iOS開發(fā):靜態(tài)庫(.a文件) 
    Shell編譯
    掌握基本Shell使用->修改和應(yīng)用Shell
第二點(diǎn):什么是Shell?
    腳本語言->編譯庫(應(yīng)用技術(shù))

第三點(diǎn):Shell環(huán)境?
    Mac環(huán)境支持Shell開發(fā)
    Shell中類非常多
        Bash所有的操作系統(tǒng)默認(rèn)腳本語言(免費(fèi)、易用)
        種類:bash、c Shell、K Shell等等...            

第四點(diǎn):進(jìn)入Shell語言基礎(chǔ)學(xué)習(xí)?
    1、第一個(gè)Shell程序?
        1.1 創(chuàng)建Shell文件
            命令:touch hello.sh
        1.2 編寫Shell程序
            定義文件聲明
            #!/bin/bash
            echo "Hello world!" 

            #!:表示約定標(biāo)記,他會告訴系統(tǒng)這個(gè)腳本需要什么樣子的解釋器來執(zhí)行,既是一種腳本體現(xiàn)。
            echo:表示命令用于輸出文本信息   

        1.3 修改文件權(quán)限
            1.3.1 權(quán)限結(jié)構(gòu)
                分為了4個(gè)部分(QQ群為例)
                第一部分:文件類型->QQ群類型
                第二部分:文件所有者->群主
                第三部分:所有者同組用戶->管理員
                第四部分:其他用戶->群成員  

            1.3.2 查看每一個(gè)部分權(quán)限
                查看文件權(quán)限      
                命令:ls -l hello.sh
                    -rw-r—r--
            1.3.3 修改文件權(quán)限
                命令: chmod +x ./hello.sh
                    -rwxr-xr-x

        1.4 執(zhí)行Shell腳本文件
            命令:./hello.sh

    2、Shell腳本語法->注釋?
        ”#“->表示注視
        例如:
            腳本代碼
                #!/bin/bash
                # 輸出了Hello world!
                echo "Hello world!"
        注意:在Shell腳本中,沒有多行注視,只有單行注釋

    3、Shell腳本語言->變量
        3.1 變量定義->注意事項(xiàng)
            注意一:定義變量時(shí)候,變量名出不需要加"$"符號
            注意二:變量名和等號不能夠有空格(和我們的一般語言不一樣)
            注意三:變量名首字母必需是字母+下劃線(a-z、A-Z)
            注意四:變量名中間不允許有空格 
            注意五:不允許使用標(biāo)點(diǎn)符號
            …細(xì)節(jié)
        3.2 只讀變量
            關(guān)鍵字:readonly(只讀,不能夠修改)
            腳本代碼
                name="HelloApp"
                readonly name
                #./hello.sh: line 35: name: readonly variable
                name="smile2017"
                echo "執(zhí)行了"

        3.3 刪除變量?
            語法:unset(干掉了)
            案例:unset 變量名

        3.4 變量類型
            3.4.1 類型一:本地變量
                作用域整個(gè)bash進(jìn)程可以使用
                語法:name="Dream"
            3.4.2 類型二:局部變量
                作用域:當(dāng)前代碼段(修飾符:local)
                local name="Andy"
            3.4.3 類型三:環(huán)境變量
                作用域:當(dāng)前shell進(jìn)程以及子進(jìn)程
                語法:export name="Dream"
            3.4.4 類型四:位置變量
                腳本代碼
                    #!/bin/bash
                    name=${0}
                    age=${1}
                    sex=${2}
                    echo "姓名:${name}   年齡:${age}  性別:${sex} "
                執(zhí)行腳本
                    ./hello.sh Jeff 150 男
                執(zhí)行結(jié)果        
                    ${0}表示腳本文件名稱
                    參數(shù)從1開始
            3.4.5 特殊變量
                3.4.5.1 ${0}->特殊變量->文件名稱
                3.4.5.2 ${?}->表示返回上一個(gè)命令執(zhí)行狀態(tài)返回值
                    0:表示執(zhí)行成功
                    1:程序執(zhí)行結(jié)果
                    2:表示程序狀態(tài)返回碼(0-255)
                        系統(tǒng)預(yù)留錯(cuò)誤(1、2、127)
                    案例測試
                        #!/bin/bash
                        echo ${0}
                        echo ${?}
                
                3.4.5.3 $#->參數(shù)個(gè)數(shù)

                3.4.5.4 $*->參數(shù)列表

                3.4.5.5 $@->參數(shù)列表

                3.4.5.6 $$->后去當(dāng)前shell進(jìn)行ID

                3.4.5.7 $!->執(zhí)行上一個(gè)指令PID

                3.4.5.8 ${*}和${@}區(qū)別?
                    腳本代碼
                        #!/bin/bash
                        echo ${*}
                        echo ${@}
                    執(zhí)行腳本
                        ./hello.sh Andy 200 男 
                    腳本結(jié)果
                        ${*}->參數(shù)列表:將所有的參數(shù)組成一個(gè)字符串->"Andy 200 男"
                        ${@}->參數(shù)列表:分開的->"Andy" 200 "男"
        
    4、Shell腳本語言->字符串?
        4.1 字符串->單引號
            腳本代碼
                #!/bin/bash
                name='Andy'
                echo ${name}
                        
            
            腳本結(jié)果:Andy
        
        4.2 字符串->雙引號
            腳本代碼
                #!/bin/bash
                name="Andy"
                echo ${name}
                        
            
            腳本結(jié)果:Andy
        
        4.3 字符串->拼接
            方式一:
                腳本代碼
                    #!/bin/bash
                    name="Andy"
                    age=100
                    sex="男"
                    info="${name} ${age} ${sex}"
                    echo ${info}
                        
            
                腳本結(jié)果:"Andy 100 男"
            方式二
                腳本代碼
                    #!/bin/bash
                    name="Andy"
                    age=100
                    sex="男"
                    info=" 姓名:"${name}"   年齡:"${age}"  性別:"${sex}"  "
                    echo ${info}
                        
            
                腳本結(jié)果:"姓名:Andy 年齡:100 性別:男"

        4.4 字符串->獲取字符串長度
            語法結(jié)構(gòu):${#變量名}
            腳本代碼
                #!/bin/bash
                name="Andy"
                echo ${#name}
            腳本結(jié)果:4

        4.5 字符串->截取
            語法:${變量名:開始位置:截取長度}
            腳本代碼
                    #!/bin/bash
                    name="I have a Dream"
            案例一:從字符串第3個(gè)開始截取,截取3個(gè)
                name="I have a Dream"
                result=${name:2:3}
                echo ${result}
            案例二:從字符串第5個(gè)開始截取,到最后一個(gè)結(jié)束
                方式一
                    name="I have a Dream"
                    length=${#name}
                    result=${name:5:length-1}
                    echo ${result}
                方式二
                    name="I have a Dream"
                    result=${name:5}
                    echo ${result}
        4.6 字符串->刪除
            語法一:${變量名#刪除字符串 正則表達(dá)式}
                作用:從字符串開頭(左邊)開始匹配要?jiǎng)h除字符串
                案例一:
                    name="I have a Dream"
                    result=${name#Dream}
                    echo ${result}
                    原因:匹配不到
                案例二:            
                    name="I have a Dream"
                    result=${name#I}
                    echo ${result}
                案例三:查找指定字符第一個(gè),并且刪除前面所有的字符(包含自己)
                    name="I have a Dream"
                    result=${name#*D}
                    echo ${result}

                案例四:指定刪除范圍
                    name="I have a Dream"
                    result=${name#h*D}
                    echo ${result}

            語法二:${變量名##刪除字符串 正則表達(dá)式}
                作用:從字符串結(jié)尾(右邊)開始匹配要?jiǎng)h除字符串
                案例一
                    name="I have a Dream"
                    result=${name##*a}
                    echo ${result}
                總結(jié):語法一和語法二,都是從左邊刪除到右邊,查找方向不一樣

            語法三:${變量名%刪除字符串 正則表達(dá)式}
                從字符串結(jié)尾開始匹配,刪除匹配的字符串
                案例一:查找第一個(gè)字符(匹配第一個(gè))
                    代碼一:
                        name="I have a Dream"
                        result=${name%a}
                        echo ${result}
                    代碼二:
                        name="I have a Dream"
                        result=${name%m}
                        echo ${result}

                案例二:查找指定字符第一個(gè),并且刪除前面所有字符(包含自己)
                    name="I have a Dream"
                    result=${name%h*}
                    echo ${result}

                案例三:指定刪除范圍
                    name="I have a Dream"
                    result=${name%a*D}
                    echo ${result}

            語法四:${變量名%%刪除字符串 正則表達(dá)式}
                案例一:查找指定字符最后一個(gè),并且刪除前面所有的字符(包含自己)
                    name="I have a Dream"
                    result=${name%%a*}
                    echo ${result}

            總結(jié):
                從左邊刪除到右邊
                    #->表示查詢方向從左到右
                    ##->表示查詢方向從右到左
                從右邊刪除到左邊
                    %->表示查詢方向從右到左
                    %%->表示查詢方向從左到右
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容