基本語(yǔ)法一

  • #
# -> 表示注釋在腳本中沒(méi)有多行注釋只有單行注釋
  • echo
echo -> 表示輸出例如 echo "Hello Word!"
  • 定義變量
例: name="HelloWord"
注意: 變量名和等號(hào)中間不能添加空格
注意:  變量名的首字符是字母或下劃線
  • 只讀變量readonly
例:
name="Hello Word and me!"
readonly name
name="111"
echo $name
執(zhí)行命令: ./hello.sh
報(bào)錯(cuò): ./hello.sh: line 8: name: readonly variable
  • 刪除變量 unset
例:
name="Hello Word and me!"
unset name
echo $name
執(zhí)行命令: ./hello.sh
打印為空
  • 變量類型
類型一: 本地變量
    作用域是整個(gè)bash進(jìn)程可以使用
    語(yǔ)法: name="Mr.H"
類型二: 局部變量
     作用域: 當(dāng)前代碼段 (修飾符: local)
     語(yǔ)法: local name="Mr.H"
類型三: 環(huán)境變量
     作用域: 當(dāng)前shell進(jìn)程以及子進(jìn)程 (修飾符: export)
     語(yǔ)法: export name="Mr.H"
類型三: 位置變量
    語(yǔ)法: ${0}
    例子
    one=${0}
    two=${1}
    three=${2}
    echo "文件名${one}"
    echo "姓名${two} 年齡${three}"
    執(zhí)行命令: $ ./hello.sh Mr.H 100
    輸出:
    文件名./hello.sh
    姓名Mr.H 年齡100
  • 特殊變量
${0} : 表示文件名稱
${?} : 表示返回上一個(gè)命令執(zhí)行的狀態(tài)返回值如下
           0: 表示執(zhí)行成功
           1: 表示執(zhí)行結(jié)果
           0: 表示程序狀態(tài)返回碼(0-255)   
例:
han = ""
temp=${?}
echo "哈哈${temp}"
執(zhí)行命令: ./hello.sh
./hello.sh: line 10: han: command not found
哈哈127
注意:此處所指的上一個(gè)命令其實(shí)就是上一行執(zhí)行的命令

${#} : 參數(shù)個(gè)數(shù)
${*} : 參數(shù)列表 
${@} : 參數(shù)列表
${$} : 獲取當(dāng)前shell進(jìn)程ID
${!} : 執(zhí)行上一個(gè)指令進(jìn)程ID
  • 字符串
聲明:
   name='Han'
   echo ${name}
字符串拼接
   name='Han'
   age=100
   info="${name} ${age}"
   echo ${info}
獲取字符串長(zhǎng)度 #
   name="Han"
   echo ${#name}
截取字符串
    語(yǔ)法: ${變量名:開始位置:截取長(zhǎng)度}
    例:
    name="wangmumu"
    echo ${name:0:3}

    從第幾個(gè)截取到最后
    name="wangmumu"
    lenth=${#name}-1
    echo ${name:1:lenth}
    同時(shí)可以寫成,第三個(gè)參數(shù)不寫默認(rèn)截取到最后
    echo ${name:1}
字符串刪除
    語(yǔ)法: ${變量名#要?jiǎng)h除的字符串 正則表達(dá)式}
    作用: 從字符串開頭(左邊)開始匹配要?jiǎng)h除的字符串
    例:
    name="wangmumu"
    echo ${name#u}
    這樣是刪除不了的因?yàn)檫@個(gè)是匹配左邊的第一個(gè)字符
    name="wangmumu"
    echo ${name#w}
    這樣是可以刪除的
    
    刪除某個(gè)字符前面的所有字符包含自己 *
    例:
    name="wangmumu"
    echo ${name#*u}
    執(zhí)行結(jié)果:
    mu
  
    指定范圍刪除  a*b 意思是刪除a和b之間的字符(注意a必須是第一           個(gè)字符)
   例:
   例:
    name="wangmufmu"
    echo ${name#w*f}
    執(zhí)行結(jié)果:
    mu
    泛反向刪除使用(從右往左刪除)
     name="wangmufmu"
    echo ${name##*f}
    執(zhí)行:  wangmu
  
   %刪除
    語(yǔ)法: ${變量名%要?jiǎng)h除的字符串 正則表達(dá)式}
    從字符串的尾部開始匹配, 刪除匹配的字符串
    例:
    name="wangmufmu"
    echo ${name%u}
    結(jié)果:
    wangmufm

    查找指定字符串第一個(gè),并且刪除前面所有字符串包括自己
    name="wangmufmu"
    echo ${name%f*}
    結(jié)果: 
    wangmu
    
    指定刪除的范圍
    name="wangmufmu"
    echo ${name%g*u}
    結(jié)果:
    wan
    說(shuō)明: 是從第一個(gè)開始刪除到g這個(gè)字符

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

相關(guān)閱讀更多精彩內(nèi)容

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