基本語法一

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

${#} : 參數個數
${*} : 參數列表 
${@} : 參數列表
${$} : 獲取當前shell進程ID
${!} : 執行上一個指令進程ID
  • 字符串
聲明:
   name='Han'
   echo ${name}
字符串拼接
   name='Han'
   age=100
   info="${name} ${age}"
   echo ${info}
獲取字符串長度 #
   name="Han"
   echo ${#name}
截取字符串
    語法: ${變量名:開始位置:截取長度}
    例:
    name="wangmumu"
    echo ${name:0:3}

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

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

    查找指定字符最后一個,并且刪除前面所有字符
    name="wangmufmu"
    echo ${name%%u*}
    結果:
    wangm
    
    總結:
          從左邊刪除到右邊
                # : 表示查詢方向從左到右
                ## : 表示查詢方向從右到左
          從右邊刪除到左邊
                % : 表示查詢方向從右到左
                %% : 表示查詢方向從左到右
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容